Do more on the web, with a fast and secure browser!

Download Opera browser with:

  • built-in ad blocker
  • battery saver
  • free VPN
Download Opera

Opera12 - eBay Login broken

  • Since ebay changed the login process, which throws a js error, one cannot sign in with Opera 12.18 anymore.
    Does anyone here maybe have a user.js fix or similar?
    Would be great, thanks!

  • I just looked quickly. I see two major problems.

    • window.performance isn't supported. They use window.performance.timing for example.

    • They make use of the 'let' keyword in Javascript.

    You might be able to fake the first one with User JS, but I don't know what you can do about the second one. I thought adding 'use strict'; at the top of a script added support a few EcmaScript things in Opera 12, but I don't really remember. It doesn't help for the 'let' keyword though. I would imagine that you'd have to use proxomitron with Opera to change that to 'var'. Or, maybe you can intercept the script with UserJS and rewrite its content to use 'var' instead of 'let'. Don't know.

    There might be other errors too, but those are the 2 I saw.

    You'd probably have to change Opera's UA string too.

    Another option might be to look at the form they use to submit and try to submit directly to the server script with your own HTML page. But, their login security might prevent that with tokens or something.

  • thanks for looking.

    im not firm in js, so if someone is still using opera 12 and has a user.js or something already, would be highly appreciated.
    maybe there is a script already out there that provides another way of logging in?
    i tried also to spoof the ua to mobile page, but its the same login page.

    i am still using opera 12 mail and cannot answer the ebay mails without being logged in.
    for now i login with vivaldi and copy the nosession cookie value over to opera, what works for now..

  • Is there any reason you have not upgraded to New Opera, now on version 54?? Although I also hung on tightly to Opera 12.18, at the end of the day it was too much work to keep it running properly with all the new web page advances. So I bought in to New Opera

    Why not bite the bullet, and take some time to install O54 (it can run concurrently with 12.18) and discover how nice it is to not have the issues you encounter now with a totally outdated version of Opera??

  • Current version is 55.

  • obviously there are reasons, otherwise i would use vivaldi.

  • @fluse No problem, I understand...I was just offering another way out.

  • anyone with a solution?

  • still..

  • For window.performance support, you might be able to fake it with a polyfill like: https://github.com/blackswanny/performance-polyfill/blob/master/src/index.js

    You would include all that js in your ebay.js User JS file.

    Next, to convert 'let' keyword support to preES6 support, you'd use a transpiler like Babel: https://unpkg.com/babel-standalone@6.26.0/babel.min.js.

    You would include all that js in your ebay.js User JS file too.

    Then, in ebay.js, you'd use:

    window.opera.addEventListener("BeforeScript", function(e) {
        e.element.text = Babel.transform(e.element.text, { presets: ['es2015'] }).code;
        //alert(e.element.text);
    }, false);
    

    to intercept scripts and convert them to older JS code that will run in Opera 12.

    You'd set the folder ebay.js is in as a global User JS folder via "Alt + p -> Advanced -> Content -> Javascript options" untill you know all the domains you need to apply ebay.js to for ebay to work. Then, you can just set the folder via site preferences only for the ebay domains in question.

    Since this is intercepting all scripts and converting them, it's going to make the page load slower. You could do something like:

    window.opera.addEventListener("BeforeScript", function(e) {
        if (e.element.text.indexOf("let") != -1) {
            e.element.text = Babel.transform(e.element.text, { presets: ['es2015'] }).code;
            //alert(e.element.text);
        }
    }, false);
    

    to only convert when "let" is seen. That could make the page load faster as there might be less converting. Using regex to only match the word "let" might be better so that you don't get false positives. Then again, there might be more than "let" usage that needs to be converted, so always converting might be the best bet.

    Anyway, getting this far and trying it on ebay.com to sign in doesn't solve the issue because there are more errors. The next one to solve is the lack of requestAnimationFrame support. You'll probably have to use a polyfill for that too.

    Once that's solved (if the polyfill helps with that), you'll have to see what script errors are left and solve those. Ctrl + shift + i to load the developer tools can help with that.

    So, that might get your started at least.

  • I thought using a mobile user agent string like Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Mobile Safari/537.36 in Opera via opera:config#UserPrefs|CustomUser-Agent and going to m.ebay.com would help. But, when you choose to sign in there, it still takes you to the same sign-in page that you get for desktop.

  • If you view source of the ebay login page and look for the form, you'll see:

    <form id="SignInForm" name="SignInForm" action="https://www.ebay.com/signin/s" method="post">...
    

    Looking at all the input elements that follow, you might be able to construct an HTML-only login form page (ebaylogin.html) for example that you can put on your desktop and bookmark. But, haven't tried that. The login might be protected by tokens that are generated from the JS on the page (which doesn't load in Opera 12 right). But, maybe not.

  • It's look like this:

    ebaysignin.html

    <form action="https://www.ebay.com/signin/s" method="post">
        <input type="text" name="userid">
        <input type="password" name="pass">
        <input type="submit" value="Sign In">
    </form>
    

    But, you'll need some of the other <input> elements that are type="hidden" from the page with the correct values etc.

  • Or, maybe just user User JS to add a regular submit button to the form on the logon page. Since it won't use JS, clicking it should at least submit the form. I'll try that after a bit.

  • @burnout426 That doesn't seem to work. Same with creating a form that duplicates all the form data that Chrome submits for example. In Opera 12, ebay says there's a mismatch with the username and password.

  • When tesing the User JS above, don't forget to enable opera:config#UserPrefs|AlwaysLoadUserJavaScript, opera:config#UserPrefs|UserJavaScript and opera:config#UserPrefs|UserJavaScriptonHTTPS and restart so that the User JS always runs on the https ebay login page.

    I think I'm done messing around with this issue, but I'll leave you with this:

    ebaysignin.html:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <form action="https://www.ebay.com/signin/s" method="post">
                <input type="hidden" name="i1" value="">
                <input type="hidden" name="pageType" value="-1">
                <input type="hidden" name="srt" value="correct value goes here">
                <input type="hidden" name="tagInfo" value="correct value goes here">
                <input type="hidden" name="mid" value="correct value goes here">
                <input type="hidden" name="usid" value="correct value goes here">
                <input type="hidden" name="htmid" value="">
                <input type="hidden" name="fypReset" value="">
                <input type="hidden" name="iCurl" value="">
                <input type="hidden" name="src" value="">
                <input type="hidden" name="AppName" value="">
                <input type="hidden" name="srcAppId" value="">
                <input type="hidden" name="errmsg" value="">
                <input type="hidden" name="rtmData" value="PS=T.0">
                <input type="hidden" name="rgid" value="value goes here">
                <input type="hidden" name="some guid" value="value for that guid">
                <input type="text" name="userid" value="your username or email address">
                <input type="password" name="pass" value="your password">
                <input type="hidden" name="keepMeSignInOption2" value="on">
                <input type="submit" value="Sign In">
            </form>
        </body>
    </html>
    

    If you can figure out the correct values for the inputs above that are not empty or already specified (the ones with value="" shouldn't need to have values, but should be present perhaps), you might be able to load the page and log in that way in Opera 12. If you think you have all the values right and it still doesn't work, you might also have to make sure to set a modern user-agent string (that doesn't have 'opera' or 'opr" in it) via opera:config#UserPrefs|CustomUser-Agent. You might also have to have a User JS script active that does window.opera=undefine; to further hide Opera from the site.

    If things still don't work, it might be a referrer issue where the ebay server-side script detects that you're not submitting from an ebay page. In that cause, in Opera 12, view sourcer of the log in page, replace its content with the markup above, apply changes and then submit.

    Good luck.