使用浏览器中现有的经过身份验证的会话在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 中显示带有经过身份验证的用户会话的粉丝页面

XCTest 中未保留经过身份验证的 Vapor 会话

重启后 Spring Security 仍然经过身份验证(但没有会话)

HttpServletRequest 在经过身份验证的 IDP 并重定向到 SP 后返回空会话

没有会话的 Passport js 身份验证

django 会话密钥在身份验证时更改