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)
因此,我尝试了一下,但似乎并没有解决任何问题。如果我看一下响应,就会发现它实际上是没有任何用户登录的页面。不知道我还想念什么...
如果您重用浏览器的 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)