使用浏览器中现有的经过身份验证的会话在python上执行https请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用浏览器中现有的经过身份验证的会话在python上执行https请求相关的知识,希望对你有一定的参考价值。
是否可以采用现有登录会话(例如在Chrome中)并将该会话传递给python脚本以执行https请求?
要明确我想做什么,有一个网站的内容只有在你登录时才能被访问,但是为简单的http auth卷曲凭证是不可行的,因为它实际上有验证码。所以我要做的是,登录说浏览器,并将该会话提取到python脚本,并通过该会话请求URL。我有道理吗?
import requests
url="http://stackoverflow.com/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"}
cookie = {
"domain": ".stackoverflow.com",
"expirationDate": "1427212131.77312",
"hostOnly": "false",
"httpOnly": "true",
"name": "usr",
"path": "/",
"secure": "false",
"session": "false",
"storeId": "0",
"value": "SOMEVALUE",
"id": "5"
}
t = open("response.txt", "w")
t.write(requests.get(url, headers=headers, cookies=cookie).text.encode("ascii", "ignore"))
所以我尝试了这个,它似乎没有让我到任何地方。如果我查看响应,我发现它实际上是没有任何用户登录的页面。不知道我还缺少什么......
如果您重复使用浏览器的cookie和用户代理,这应该是可行的。据我所知,任何这样的解决方案都是特定于浏览器的:我遇到过a script,它使用SQLite提取Chrome cookie并使用它们通过Requests
库发出HTTP请求。
脚本的chrome_cookies
方法返回包含cookie的字典。如果使用Requests
库,则可以在发出请求时将字典作为关键字参数传递:
import requests
import pyCookieCheat
url = 'http://www.example.com'
s = requests.Session()
cookies = pyCookieCheat.chrome_cookies(url)
s.get(url, cookies = cookies)
为什么不解析生成的CAPTCHA,显示图像并手动输入解决方案?与实际劫持会话相比,它可能更容易解决您的问题。另外,它会产生更便携和稳定的脚本(可能)。
这可能有所帮助
jar = requests.cookies.RequestsCookieJar([
{
"domain": ".stackoverflow.com",
"expirationDate": "1427212131.77312",
"hostOnly": "false",
"httpOnly": "true",
"name": "usr",
"path": "/",
"secure": "false",
"session": "false",
"storeId": "0",
"value": "SOMEVALUE",
"id": "5"
}]
requests.get(url, headers=headers, cookies=jar)
@Stupid.Fat.Cat让我知道什么对你有用
以上是关于使用浏览器中现有的经过身份验证的会话在python上执行https请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook 的访问令牌在 UIWebView 中显示带有经过身份验证的用户会话的粉丝页面
重启后 Spring Security 仍然经过身份验证(但没有会话)