Wie kann ich es tun? Ich habe versucht, einen bestimmten Link (mit urllib) einzugeben, aber dazu muss ich mich anmelden.
Ich habe diese Quelle von der Website:
<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" />
Ist das möglich?
python
automation
httpclient
webautomation
Bruno 'Shady'
quelle
quelle
2to3
aber jetzt bekomme ich eine,ModuleNotFoundError
wenn ich versuche, es zu importieren.ModuleNotFoundError
durch Verwenden / Konvertieren von Twill 1.8.0 und Installierenlxml
undrequests
mit lösenpip install
. Aber jetzt bekomme ich eine,SyntaxError
wenn ich versuche zu importieren, weil irgendwoFalse = 0
....Lassen Sie mich versuchen, es einfach zu machen. Angenommen, die URL der Website lautet www.example.com, und Sie müssen sich anmelden, indem Sie Benutzername und Passwort eingeben. Wir gehen also zur Anmeldeseite und sagen http://www.example.com/login .php jetzt und sehen Sie sich den Quellcode an und suchen Sie nach der Aktions-URL, die in Form eines Tags vorliegen soll
<form name="loginform" method="post" action="userinfo.php">
Nehmen Sie jetzt userinfo.php, um eine absolute URL zu erstellen, die " http://example.com/userinfo.php " lautet. Führen Sie nun ein einfaches Python-Skript aus
import requests url = 'http://example.com/userinfo.php' values = {'username': 'user', 'password': 'pass'} r = requests.post(url, data=values) print r.content
Ich hoffe, dass dies irgendwann jemandem irgendwo hilft.
quelle
Normalerweise benötigen Sie Cookies, um sich auf einer Website anzumelden. Dies bedeutet cookielib, urllib und urllib2. Hier ist eine Klasse, die ich zurückgeschrieben habe, als ich Facebook-Web-Spiele gespielt habe:
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())
Sie werden nicht unbedingt die HTTPS- oder Redirect-Handler benötigen, aber sie tun nicht weh und machen den Opener viel robuster. Möglicherweise benötigen Sie auch keine Cookies, aber es ist schwer, dies anhand des von Ihnen geposteten Formulars zu erkennen. Ich vermute, dass Sie dies möglicherweise nur aufgrund der auskommentierten Eingabe "Erinnere dich an mich" tun.
quelle
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
Weitere Informationen finden Sie unter: https://docs.python.org/2/library/urllib2.html
quelle
2
wurde in dendocs.python.org
URLs hinzugefügt : docs.python.org/2/library/urllib2.htmlWebseitenautomatisierung? Auf jeden Fall "Webbot"
webbot
funktioniert sogar auf Webseiten, deren ID und Klassennamen sich dynamisch ändern und die mehr Methoden und Funktionen als Selen oder Mechanisierung aufweisen.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 ^_^
Die Dokumente sind auch ziemlich einfach und einfach zu bedienen: https://webbot.readthedocs.io
quelle
autocomplete=off
?Could not find a version that satisfies the requirement webbot (from versions: 0.0.1.win-amd64)
Websites im Allgemeinen können die Autorisierung auf viele verschiedene Arten überprüfen, aber die, auf die Sie abzielen, scheint es Ihnen einigermaßen einfach zu machen.
Sie müssen lediglich einen formularcodierten Blob mit den verschiedenen Feldern
POST
an dieauth/login
URL senden (vergessen Sie die Beschriftungenfor
, sie sind Dekoration für menschliche Besucher).handle=whatever&password-clear=pwd
und so weiter, solange Sie die Werte für das Handle (AKA-E-Mail) und das Passwort kennen, sollte es Ihnen gut gehen.Vermutlich leitet POST Sie auf eine Seite "Sie haben sich erfolgreich angemeldet" mit einem
Set-Cookie
Header weiter, der Ihre Sitzung bestätigt (speichern Sie dieses Cookie und senden Sie es bei weiterer Interaktion während der Sitzung zurück!).quelle
Für HTTP-Dinge sollte die aktuelle Auswahl lauten: Anfragen - HTTP für Menschen
quelle