如何使用Python登录网页并检索cookie供以后使用?

man*_*dom 142 python authentication cookies http

我想使用python下载和解析网页,但要访问它我需要设置几个cookie.因此,我需要首先通过https登录网页.登录时刻涉及向/login.php发送两个POST参数(用户名,密码).在登录请求期间,我想从响应头中检索cookie并存储它们,以便我可以在请求中使用它们来下载网页/data.php.

我怎么能在python中做到这一点(最好是2.6)?如果可能的话我只想使用内置模块.

Bod*_*man 156

这是使用优秀请求库的版本:

from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    response = c.get('http://example.com/protected_page.php')
    print(response.headers)
    print(response.text)
Run Code Online (Sandbox Code Playgroud)

  • +1这是在python中实现它的现代方法. (28认同)
  • 在这个例子中,''action':'login'`实际上是必需的,还是只是随请求一起发送的额外参数? (2认同)

Har*_*mbe 146

import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()
Run Code Online (Sandbox Code Playgroud)

resp.read()是您要打开的页面的直接html,您可以使用opener会话cookie查看任何页面.

  • @Heartinpiece是的,如果服务器提供它,你应该使用HTTPS. (2认同)