Need Pattern For Logging Into A Website

Discussion in 'Python' started by Tim Daneliuk, Jan 25, 2013.

  1. Tim Daneliuk

    Tim Daneliuk Guest

    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/
    Tim Daneliuk, Jan 25, 2013
    #1
    1. Advertising

  2. Tim Daneliuk

    Steve Petrie Guest

    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()
    ....
    Steve Petrie, Jan 25, 2013
    #2
    1. Advertising

  3. Tim Daneliuk

    Tim Daneliuk Guest

    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/
    Tim Daneliuk, Jan 25, 2013
    #3
  4. Tim Daneliuk

    Tim Daneliuk Guest

    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/
    Tim Daneliuk, Jan 26, 2013
    #4
  5. 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.
    Michael Torrie, Jan 26, 2013
    #5
  6. Tim Daneliuk

    Tim Daneliuk Guest

    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/
    Tim Daneliuk, Jan 26, 2013
    #6
  7. 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/latest/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
    Jan WÄ…sak, Jan 28, 2013
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Antwerp
    Replies:
    0
    Views:
    1,205
    Antwerp
    Feb 15, 2005
  2. Brian Henry

    automatically logging into a website

    Brian Henry, Apr 29, 2005, in forum: ASP .Net
    Replies:
    3
    Views:
    4,300
    Herfried K. Wagner [MVP]
    Apr 29, 2005
  3. MotorcycleIke

    logging into a website on an external server

    MotorcycleIke, Sep 21, 2005, in forum: ASP .Net
    Replies:
    2
    Views:
    456
    MotorcycleIke
    Sep 22, 2005
  4. dpoehls
    Replies:
    2
    Views:
    483
    Fuzzyman
    Jan 25, 2006
  5. James_Dean
    Replies:
    0
    Views:
    538
    James_Dean
    Jun 27, 2007
Loading...

Share This Page