Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Need Pattern For Logging Into A Website (http://www.velocityreviews.com/forums/t956916-need-pattern-for-logging-into-a-website.html)

Tim Daneliuk 01-25-2013 01:29 AM

Need Pattern For Logging Into A Website
 
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 tundra@tundraware.com
PGP Key: http://www.tundraware.com/PGP/


Steve Petrie 01-25-2013 04:01 PM

Re: Need Pattern For Logging Into A Website
 
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 tundra@tundraware.com
>
> 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()
....

Tim Daneliuk 01-25-2013 04:18 PM

Re: Need Pattern For Logging Into A Website
 
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 tundra@tundraware.com
>>
>> 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 tundra@tundraware.com
PGP Key: http://www.tundraware.com/PGP/


Tim Daneliuk 01-26-2013 12:15 AM

Re: Need Pattern For Logging Into A Website
 
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 tundra@tundraware.com
PGP Key: http://www.tundraware.com/PGP/


Michael Torrie 01-26-2013 06:53 AM

Re: Need Pattern For Logging Into A Website
 
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.


Tim Daneliuk 01-26-2013 08:00 PM

Re: Need Pattern For Logging Into A Website
 
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 tundra@tundraware.com
PGP Key: http://www.tundraware.com/PGP/


Jan W─ůsak 01-28-2013 08:57 AM

Re: Need Pattern For Logging Into A Website
 
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


All times are GMT. The time now is 10:37 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.