我如何使用Pythonlogin到网站?

我该怎么做? 我试图进入一些指定的链接(与urllib),但要做到这一点,我需要login。

我有这个网站的来源:

<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" /> 

这可能吗?

也许你想使用斜纹 (这是基于机械化 )。 这很容易使用,应该能够做到你想要的。

它将如下所示:

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

您可以使用showforms()列出所有表单,只要您使用go(...)浏览到您要login的网站。 只需从python解释器中尝试一下。

让我试着简单点,假设网站的url是www.example.com,你需要填写用户名和密码,所以我们去login页面说http://www.example.com/login .php现在查看它的源代码,并search它将在窗体标签类似的行动URL

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

现在采取userinfo.php绝对URL将是“ http://example.com/userinfo.php ”,现在运行一个简单的Python脚本

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

我希望这有助于别人某个地方的某个人。

通常情况下,您需要cookie才能login到网站,这意味着cookielib,urllib和urllib2。 这是我在玩Facebook网页游戏时写下的一堂课:

 import cookielib import urllib import urllib2 # set these to whatever your fb account is fb_username = "your@facebook.login" 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()) 

您不一定需要HTTPS或redirect处理程序,但它们不会受到伤害,并且使开启程序更加健壮。 你也可能不需要cookies,但很难从你发布的表单中分辨出来。 我怀疑你可能纯粹是从“记住我”的input中被注释掉了。

 import cookielib import urllib import urllib2 url = 'http://www.someserver.com/auth/login' values = {'email-email' : 'john@example.com', '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 

有关更多信息,请访问: https : //docs.python.org/2/library/urllib2.html

一般来说,网站可以通过许多不同的方式来检查授权,但是您所定位的授权似乎对您来说相当容易。

所有你需要的是发送到auth/login URL一个窗体编码的blob与你在那里看到的各个领域(忘记标签,他们是人类访客的装饰)。 handle=whatever&password-clear=pwd等等,只要你知道句柄(AKA电子邮件)和密码的值你应该没问题。

据推测,POST会将您redirect到某个“您已成功login”的页面,并使用Set-Cookie标头validation您的会话(请务必保存该cookie并在会话的进一步交互中将其发回)。

对于HTTP来说,当前的select应该是: Requests-HTTP for Humans