gpt4 book ai didi

python-3.x - 如何将 Firefox cookie 导入 python 请求

转载 作者:行者123 更新时间:2023-12-04 18:21:03 25 4
gpt4 key购买 nike

我登录了 的某个页面火狐 我想拿 cookies 并尝试使用 浏览网页python-请求 .问题是在将 cookie 导入到请求 session 之后什么也没有发生(就像根本没有 cookie)。请求生成的 cookie 的结构也与 Firefox 不同。
是否可以加载 FF cookie 并在请求 session 中使用它?

到目前为止我的代码:

import sys
import sqlite3
import http.cookiejar as cookielib
import requests
from requests.utils import dict_from_cookiejar

def get_cookies(final_cookie, firefox_cookies):
con = sqlite3.connect(firefox_cookies)
cur = con.cursor()
cur.execute("SELECT host, path, isSecure, expiry, name, value FROM moz_cookies")
for item in cur.fetchall():
if item[0].find("mydomain.com") == -1:
continue
c = cookielib.Cookie(0, item[4], item[5],
None, False,
item[0], item[0].startswith('.'), item[0].startswith('.'),
item[1], False,
item[2],
item[3], item[3]=="",
None, None, {})
final_cookie.set_cookie(c)



cookie = cookielib.CookieJar()
input_file = ~/.mozilla/firefox/myprofile.default/cookies.sqlite
get_cookies(cookie, input_file)

#print cookie given from firefox
cookies = dict_from_cookiejar(cookie)
for key, value in cookies.items():
print(key, value)


s = requests.Session()
payload = {
"lang" : "en",
'destination': '/auth',
'credential_0': sys.argv[1],
'credential_1': sys.argv[2],
'credential_2': '86400',
}
r = s.get("mydomain.com/login", data = payload)
#print cookie from requests
cookies = dict_from_cookiejar(s.cookies)
for key, value in cookies.items():
print(key, value)

firefox cookie 的结构是:
_gid GA1.3.2145214.241324
_ga GA1.3.125598754.422212
_gat_is4u 1

来自请求的 cookie 结构是:
UISTestAuth tesskMpA8JJ23V43a%2FoFtdesrtsszpw

毕竟,当尝试将 FF 中的 cookie 分配给 session.cookies 时,请求有效,因为我什么都不导入。

最佳答案

Firefox 中似乎有两种类型的 cookie - 请求 回复 .当页面检查器>网络>登录(发布)>Cookies时可以看到它:

Response cookies:   
UISAuth
httpOnly true
path /
secure true
value tesskMpA8JJ23V43a%2FoFtdesrtsszpw
Request cookies:
_ga GA1.3.125598754.422212
_gat_is4u 1
_gid GA1.3.2145214.241324

请求 cookie 存储在 cookies.sqlite 文件在
~/.mozilla/firefox/*.default/cookies.sqlite

并且可以通过更多方式加载到python对象,例如:
import sqlite3
import http.cookiejar

def get_cookies(cj, ff_cookies):
con = sqlite3.connect(ff_cookies)
cur = con.cursor()
cur.execute("SELECT host, path, isSecure, expiry, name, value FROM moz_cookies")
for item in cur.fetchall():
c = cookielib.Cookie(0, item[4], item[5],
None, False,
item[0], item[0].startswith('.'), item[0].startswith('.'),
item[1], False,
item[2],
item[3], item[3]=="",
None, None, {})
print c
cj.set_cookie(c)

其中 cj 是 CookieJar 对象,ff_cookies 是 Firefox cookies.sqlite 的路径。取自 this page .

使用 session 加载 cookie 并导入到 python 请求的整个代码如下所示:
 import requests
import sys

cj = http.cookiejar.CookieJar()
ff_cookies = sys.argv[1] #pass path to the cookies.sqlite as an argument to the script
get_cookies(cj, ff_cookies)
s = requests.Session()
s.cookies = cj

回复 cookie 基本上是 session ID,它通常在 session 结束(或某些超时)时过期,因此不会存储它们。

关于python-3.x - 如何将 Firefox cookie 导入 python 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com