使用来自浏览器的现有身份验证会话在python上执行https请求

Stu*_*Cat 6 python https session

是否可以使用现有的登录会话(例如在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"))
Run Code Online (Sandbox Code Playgroud)

因此,我尝试了一下,但似乎并没有解决任何问题。如果我看一下响应,就会发现它实际上是没有任何用户登录的页面。不知道我还想念什么...

amg*_*era 3

如果您重用浏览器的 cookie 和用户代理,这应该是可能的。据我所知,任何此类解决方案都将是特定于浏览器的:我遇到过一个使用 SQLite 提取 Chrome cookie 并使用它们向库发出 HTTP 请求的脚本Requests

该脚本的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)
Run Code Online (Sandbox Code Playgroud)