Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Need Pattern For Logging Into A Website

Reply
Thread Tools

Need Pattern For Logging Into A Website

 
 
Tim Daneliuk
Guest
Posts: n/a
 
      01-25-2013
I need to write a Python script to do the following:

- Connect to a URL and accept any certificate - self-signed or authoritative
- Provide login name/password credentials
- Fill in some presented fields
- Hit a "Submit" button

Why? Because I don't want to have to start a browser and do this
interactively every time I authenticate with a particular server.
I want to do this at the command line with no interactive intervention.

I know Python pretty well. I don't quite know how to do this and
was hoping someone had a simple pattern they could share for
doing this.

TIA,
--
----------------------------------------------------------------------------
Tim Daneliuk
PGP Key: http://www.tundraware.com/PGP/

 
Reply With Quote
 
 
 
 
Steve Petrie
Guest
Posts: n/a
 
      01-25-2013
On Thursday, January 24, 2013 8:29:51 PM UTC-5, Tim Daneliuk wrote:
> I need to write a Python script to do the following:
>
>
>
> - Connect to a URL and accept any certificate - self-signed or authoritative
>
> - Provide login name/password credentials
>
> - Fill in some presented fields
>
> - Hit a "Submit" button
>
>
>
> Why? Because I don't want to have to start a browser and do this
>
> interactively every time I authenticate with a particular server.
>
> I want to do this at the command line with no interactive intervention.
>
>
>
> I know Python pretty well. I don't quite know how to do this and
>
> was hoping someone had a simple pattern they could share for
>
> doing this.
>
>
>
> TIA,
>
> --
>
> ----------------------------------------------------------------------------
>
> Tim Daneliuk
>
> PGP Key: http://www.tundraware.com/PGP/


The mechanize module (http://wwwsearch.sourceforge.net/mechanize/) might be a place to start. I've done something similar with code like this:

response = mechanize.urlopen(login_form_url)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()
form = forms[0] # might be more than one, though
# fill the form
form.set_value(username, name='userName')
form.set_value(password, name='password')
# set headers - user-agent, etc.
login_request = form.click()
login_response = mechanize.urlopen(login_request)
login_response_content = login_response.read()
....
 
Reply With Quote
 
 
 
 
Tim Daneliuk
Guest
Posts: n/a
 
      01-25-2013
On 01/25/2013 10:01 AM, Steve Petrie wrote:
> On Thursday, January 24, 2013 8:29:51 PM UTC-5, Tim Daneliuk wrote:
>> I need to write a Python script to do the following:
>>
>>
>>
>> - Connect to a URL and accept any certificate - self-signed or authoritative
>>
>> - Provide login name/password credentials
>>
>> - Fill in some presented fields
>>
>> - Hit a "Submit" button
>>
>>
>>
>> Why? Because I don't want to have to start a browser and do this
>>
>> interactively every time I authenticate with a particular server.
>>
>> I want to do this at the command line with no interactive intervention.
>>
>>
>>
>> I know Python pretty well. I don't quite know how to do this and
>>
>> was hoping someone had a simple pattern they could share for
>>
>> doing this.
>>
>>
>>
>> TIA,
>>
>> --
>>
>> ----------------------------------------------------------------------------
>>
>> Tim Daneliuk
>>
>> PGP Key: http://www.tundraware.com/PGP/

>
> The mechanize module (http://wwwsearch.sourceforge.net/mechanize/) might be a place to start. I've done something similar with code like this:
>
> response = mechanize.urlopen(login_form_url)
> forms = mechanize.ParseResponse(response, backwards_compat=False)
> response.close()
> form = forms[0] # might be more than one, though
> # fill the form
> form.set_value(username, name='userName')
> form.set_value(password, name='password')
> # set headers - user-agent, etc.
> login_request = form.click()
> login_response = mechanize.urlopen(login_request)
> login_response_content = login_response.read()
> ...
>


Thanks.

--
----------------------------------------------------------------------------
Tim Daneliuk
PGP Key: http://www.tundraware.com/PGP/

 
Reply With Quote
 
Tim Daneliuk
Guest
Posts: n/a
 
      01-26-2013
On 01/25/2013 01:18 PM, Michael Torrie wrote:
> On 01/25/2013 09:18 AM, Tim Daneliuk wrote:
>> On 01/25/2013 10:01 AM, Steve Petrie wrote:
>>> On Thursday, January 24, 2013 8:29:51 PM UTC-5, Tim Daneliuk
>>> wrote: The mechanize module
>>> (http://wwwsearch.sourceforge.net/mechanize/) might be a place to
>>> start. I've done something similar with code like this:

>> Thanks.

>
> I've had good luck using urllib2 and a cookiejar. Just post your login
> credentials against the login url, keep all the cookies and then make
> your other requests using that cookiejar. Besides the Python standard
> library docs on urllib2 and cookielib, here's an article that gives an
> overview of how to use it:
>
> http://www.techchorus.net/using-cookie-jar-urllib2
>
> This technique has the advantage of not requiring anything outside of
> the standard library.
>


Does it handle self-signed SSL certs?

--
----------------------------------------------------------------------------
Tim Daneliuk
PGP Key: http://www.tundraware.com/PGP/

 
Reply With Quote
 
Michael Torrie
Guest
Posts: n/a
 
      01-26-2013
On 01/25/2013 05:15 PM, Tim Daneliuk wrote:
> Does it handle self-signed SSL certs?


No idea. you'd have to try it.

 
Reply With Quote
 
Tim Daneliuk
Guest
Posts: n/a
 
      01-26-2013
On 01/26/2013 12:53 AM, Michael Torrie wrote:
> On 01/25/2013 05:15 PM, Tim Daneliuk wrote:
>> Does it handle self-signed SSL certs?

>
> No idea. you'd have to try it.
>


OK, thanks for the pointer.

--
----------------------------------------------------------------------------
Tim Daneliuk
PGP Key: http://www.tundraware.com/PGP/

 
Reply With Quote
 
Jan Wąsak
Guest
Posts: n/a
 
      01-28-2013
On Friday, January 25, 2013 2:29:51 AM UTC+1, Tim Daneliuk wrote:
> I need to write a Python script to do the following:
>
>
>
> - Connect to a URL and accept any certificate - self-signed or authoritative
>
> - Provide login name/password credentials
>
> - Fill in some presented fields
>
> - Hit a "Submit" button
>
>
>
> Why? Because I don't want to have to start a browser and do this
>
> interactively every time I authenticate with a particular server.
>
> I want to do this at the command line with no interactive intervention.
>
>
>
> I know Python pretty well. I don't quite know how to do this and
>
> was hoping someone had a simple pattern they could share for
>
> doing this.
>
>
>
> TIA,
>


Hello Tim,

I think you may also want to take a look at python requests.
http://docs.python-requests.org/en/l...user/advanced/

From my experience they do a much nicer job than urllib and anything I've tried.
You will probably get what you want out of them easily and in no time.

--
cheers,
john
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Logging into a website using urllib2 dmbkiwi@gmail.com Python 1 01-27-2006 08:25 PM
logging into secure website with script dpoehls Python 2 01-25-2006 12:59 PM
logging into a website on an external server MotorcycleIke ASP .Net 2 09-22-2005 12:48 PM
automatically logging into a website Brian Henry ASP .Net 3 04-29-2005 10:24 PM
Logging into and parsing a website using Perl Antwerp Perl 0 02-15-2005 08:50 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57