Hoe kan ik inloggen op een website met Python?

Hoe kan ik het doen?
Ik probeerde een bepaalde link (met Urllib) in te voeren, maar om het te doen, moet ik inloggen.

Ik heb deze bron van de site:

<form id="login-form" action="auth/login" method="post">
    <div>
    <!--label for="rememberme">Remember me</label><input type="checkbox" class="remember" checked="checked" name="remember me" /-->
    <label for="email" id="email-label" class="no-js">Email</label>
    <input id="email-email" type="text" name="handle" value="" autocomplete="off" />
    <label for="combination" id="combo-label" class="no-js">Combination</label>
    <input id="password-clear" type="text" value="Combination" autocomplete="off" />
    <input id="password-password" type="password" name="password" value="" autocomplete="off" />
    <input id="sumbitLogin" class="signin" type="submit" value="Sign In" />

Is dit mogelijk?


Antwoord 1, Autoriteit 100%

Misschien wil je twill gebruiken. Het is vrij eenvoudig te gebruiken en zou kunnen kunnen doen wat u wilt.

Het ziet eruit als het volgende:

from twill.commands import *
go('http://example.org')
fv("1", "email-email", "blabla.com")
fv("1", "password-clear", "testpass")
submit('0')

U kunt showforms()om alle formulieren te vermelden nadat u hebt gebruikt go…om naar de site te bladeren die u wilt inloggen. Probeer het gewoon vanuit de Python-tolk.


Antwoord 2, Autoriteit 74%

Laat me proberen het eenvoudig te maken, veronderstel dat de URL van de site www.example.com is en je moet je aanmelden door gebruikersnaam en wachtwoord te vullen, dus we gaan naar de inlogpagina Zeg http://www.example.com/login.php nu en bekijk de broncode en zoek naar de actie-URL. Het is in formulier tag iets als

<form name="loginform" method="post" action="userinfo.php">

Neem nu userinfo.php om absolute URL te maken die ‘http://example.com/userinfo.php ‘ zal zijn , voer nu een eenvoudig python-script uit

import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
          'password': 'pass'}
r = requests.post(url, data=values)
print r.content

Ik hoop dat dit iemand ergens op een dag helpt.


Antwoord 3, Autoriteit 40%

Meestal heb je cookies nodig om in te loggen op een site, wat Cookielib, Urllib en Urllib2 betekent. Hier is een klas die ik terug schreef toen ik Facebook-webspellen speelde:

import cookielib
import urllib
import urllib2
# set these to whatever your fb account is
fb_username = "[email protected]"
fb_password = "secretpassword"
class WebGamePlayer(object):
    def __init__(self, login, password):
        """ Start up... """
        self.login = login
        self.password = password
        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener(
            urllib2.HTTPRedirectHandler(),
            urllib2.HTTPHandler(debuglevel=0),
            urllib2.HTTPSHandler(debuglevel=0),
            urllib2.HTTPCookieProcessor(self.cj)
        )
        self.opener.addheaders = [
            ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
                           'Windows NT 5.2; .NET CLR 1.1.4322)'))
        ]
        # need this twice - once to set cookies, once to log in...
        self.loginToFacebook()
        self.loginToFacebook()
    def loginToFacebook(self):
        """
        Handle login. This should populate our cookie jar.
        """
        login_data = urllib.urlencode({
            'email' : self.login,
            'pass' : self.password,
        })
        response = self.opener.open("https://login.facebook.com/login.php", login_data)
        return ''.join(response.readlines())

U hebt niet noodzakelijk de HTTPS of Redirecte handlers nodig, maar ze doen geen pijn, en het maakt de opener veel robuuster. Je hebt ook misschien geen cookies nodig, maar het is moeilijk te vertellen uit de vorm die je hebt gepost. Ik vermoed dat je, puur van de input ‘Onthoud me’ bent die is opgenomen.


Antwoord 4, Autoriteit 29%

Webpagina-automatisering? Absoluut “webbot”

webbotWerkt zelfs webpagina’s die dynamisch veranderende ID en classnames hebben en meer methoden en functies heeft dan selenium of mechanismen.

Hier is een fragment 🙂

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('[email protected]' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

De DOCS zijn ook vrij eenvoudig en eenvoudig te gebruiken: https://webbot.readthedocs.io


Antwoord 5, Autoriteit 26%

import cookielib
import urllib
import urllib2
url = 'http://www.someserver.com/auth/login'
values = {'email-email' : '[email protected]',
          'password-clear' : 'Combination',
          'password-password' : 'mypassword' }
data = urllib.urlencode(values)
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookies))
response = opener.open(url, data)
the_page = response.read()
http_headers = response.info()
# The login cookies should be contained in the cookies variable

Voor meer informatie Bezoek: https://docs.python.org/2/Library /urllib2.html


Antwoord 6, Autoriteit 10%

Websites in het algemeen kunnen op veel verschillende manieren autorisatie controleren, maar degene die u targeting lijkt, lijkt het redelijk gemakkelijk voor u te maken.

Alles wat u nodig hebt, is bij POSTnaar de auth/loginURL een formulier gecodeerde blokkering met de verschillende velden die u daar ziet (vergeet de labels for, ze zijn decoratie voor mensenbezoekers). handle=whatever&password-clear=pwdENZAAM, Zolang u de waarden voor het handvat kent (akeenmail) en wachtwoord moet u in orde zijn.

Vermoedelijk dat post u naar een aantal “U hebt met succes ingelogd” pagina met een Set-CookieHeader Validating Your Session (zorg ervoor dat u deze cookie opslaat en stuur deze terug op verdere interactie langs de sessie!).


Antwoord 7, Autoriteit 5%

Voor HTTP-zaken zou de huidige keuze moeten zijn: Requests- HTTP for Humans

Other episodes