Python CookieJar保存cookie,但不会将其发送到网站

我正在尝试使用urllib2和cookiejar登录网站.它会保存会话ID,但是当我尝试打开另一个需要身份验证的链接时,它表示我没有登录.我做错了什么?

这是代码,但对我来说失败了:

import urllib
import urllib2
import cookielib

cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

# Gives response saying that I logged in succesfully
response = opener.open("http://site.com/login", "username=testuser&password=" + md5encode("testpassword"))

# Gives response saying that I am not logged in
response1 = opener.open("http://site.com/check")

解决方法:

你的实现似乎很好……并且应该可行.

它应该发送正确的cookie,但我认为这是因为该网站实际上没有登录你.

你怎么能说它不发送cookie或者你得到的cookie不是认证你的那个.

使用:response.info()查看响应的标题,以查看您实际收到的cookie.

该网站可能没有登录您,因为:

>它检查了您没有设置的User-agent,因为有些站点只能从4个主要浏览器打开以禁止机器人访问.
>该网站可能正在寻找您可能不会发送的特殊隐藏表单字段.

1条建议:

from urllib import urlencode
# Use urlencode to encode your data

data = urlencode(dict(username='testuser', password=md5encode("testpassword")))
response = opener.open("http://site.com/login", data)

此外有一件事很奇怪:

>在发送密码之前,您将对密码进行md5编码. (奇怪)
>这通常由服务器在与数据库进行比较之前完成.
>只有当site.com在javascript中实现md5时才有可能.
>这是一个非常罕见的案例,因为只有0.01%的网站可以做到这一点.
>检查 – 可能是问题,并且您提供哈希表单而不是服务器的实际密码.
>因此,服务器将再次为您的md5哈希计算md5.

查看.. !!

上一篇:npm 常规错误


下一篇:Java去掉 URL 中的 jsessionid