我正在尝试使用python编写一个基于Web的小代理,我可以获取并显示正常的网站,但我无法使用登录登录到facebook / gmail / ... 我在这里看到了一些身份验证的例子 http://docs.python.org/release/2.5.2/lib/urllib2-examples.html但我不知道如何通过登录为所有网站制定一般解决方案,任何想法?
我的代码是:
def showurl():
url=request.vars.url
response = urllib2.urlopen(url)
html = response.read()
return html
答案 0 :(得分:2)
您的代理服务器需要存储cookie,搜索cookielib的stackoverflow。
许多网站以不同的方式对客户端进行身份验证,因此您的工作就是尽可能使用代理服务器伪造客户端。一些网站通过浏览器类型进行身份验证,一些通过创建cookie并在其中存储sessionId,或其他允许执行某些身份验证步骤的JavaScript隐藏内容。 就我的小经验而言,所有重要的东西都以饼干结束。
这只是如何使用cookielib的简单示例。
import urllib, urllib2, cookielib, getpass
username = ''
button = 'submit'
www_login = 'http://website.com'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders.append(('User-agent', 'Mozilla/4.0'))
opener.addheaders.append( ('Referer', '/dev/null') )
login_data = urllib.urlencode({'username' : username, 'password': getpass.getpass("Password:"), 'login' : button})
resp = opener.open(www_login, login_data)
print resp.read()
EDITED: 不要误导“基本HTTP身份验证”和facebook / gmail身份验证,因为它是不同的东西。 “基本HTTP身份验证”或“摘要HTTP身份验证”由您要登录的Web服务器而非网站完成。
答案 1 :(得分:1)