如何使用python urllib2.urlopen打开facebook / gmail / authencation网站?

时间:2012-06-03 06:53:16

标签: python authentication proxy urllib2 web-based

我正在尝试使用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

2 个答案:

答案 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)