HTTP basic authentication URL with "@" in password

jraede picture jraede · Dec 13, 2013 · Viewed 49.2k times · Source

I'm trying to set up some selenium tests to our staging server using Sauce Labs. It's behind a basic http auth, so theoretically I could set the selenium URL to http://user:[email protected]. However, the password contains a "@", causing all sorts of problems as you can imagine. I tried escaping it with a backslash but that did nothing from what I can tell.

So,

  1. is there an alternative way to do http authentication using selenium, i.e., not via the URL. Or,

  2. is there a way to use URL-based auth but somehow tell the browser that the "@" is part of the password?

Answer

admdrew picture admdrew · Dec 13, 2013

You just need to encode special characters like that before passing them as part of the URL, so @ would need to be passed as %40, eg:

https://user:password%40www.example.com

(I typically use this - http://meyerweb.com/eric/tools/dencoder/ - for my en/decoding needs.)