gpt4 book ai didi

python - 我无法在 selenium 中使用 python 请求 session cookie

转载 作者:太空狗 更新时间:2023-10-29 23:54:22 31 4
gpt4 key购买 nike

我正在尝试在 Web 浏览器中打开一个 requests session ,从外观上看,似乎使用 selenium 是最有效/最佳的方式。

我的代码:

import requests
from selenium import webdriver
from time import sleep

s = requests.Session()
s.get('https://www.sotf.com/en/nike/man/footwear/nike--joyride--cc3--setter--sneakers--at6395.html?RwDet=true&articoli_ID=17911')

driver = webdriver.Safari()

driver.get("https://www.sotf.com/")

for cookie in s.cookies:
driver.add_cookie({
'name': cookie.name,
'value': cookie.value,
'path': '/',
'domain': cookie.domain,
})

driver.refresh()
sleep(1000)

当打印 s.cookies.get_dict() 时,我得到以下 cookie:

{'__cfduid': 'dc81dd94c218523ce8161e4254d2652a01566815239', 'PHPSESSID': 'qhm7109shdrhu9uv3t38ani9df'}

问题是浏览器没有使用这些 cookie,当检查 safari 中的 cookie 时(使用检查元素)__cfduid 看起来就像它应该的一样,但出于未知原因我看到两个 PHPSESSID,正确的一个将 Domain 属性设置为 .wwww.sotf.com 而不是 www.sotf.com:

enter image description here

非常感谢。

最佳答案

PHPSESSID cookie 被存储两次,因为您打开页面两次 - 第一次打开带有空 cookie jar 的页面,而服务器设置第一个不安全 PHPSESSID cookie,然后从 requests.Session 复制第二个.登陆主机后清除cookie;在下面的示例中,我导航到 https://www.sotf.com/404由于 404 页面通常加载速度更快,请清除默认 cookie,然后从 requests 复制 cookie ' cookies jar :

import contextlib
import requests
from selenium import webdriver
from time import sleep


@contextlib.contextmanager
def init_driver():
d = webdriver.Chrome()
yield d
d.quit()


if __name__ == '__main__':
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9,de;q=0.8',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
}

params = {
'RwDet': 'true',
'articoli_ID': '17911',
}

s = requests.Session()
s.get('https://www.sotf.com/en/nike/man/footwear/nike--joyride--cc3--setter--sneakers--at6395.html', headers=headers, params=params)
print('cookies in requests jar:')
for c in s.cookies:
print(c)


with init_driver() as driver:
# 404 pages are usually faster to load
driver.get("https://www.sotf.com/404")
driver.delete_all_cookies()

for cookie in s.cookies:
driver.add_cookie({
'name': cookie.name,
'value': cookie.value,
'path': '/',
'domain': cookie.domain,
})

driver.get("https://www.sotf.com/")
print('cookies in selenium jar:')
for c in driver.get_cookies():
print(c)

输出:

cookies in requests jar:
<Cookie __cfduid=d54b8f9098af12dee16136e4dc641f74e1567012133 for .sotf.com/>
<Cookie PHPSESSID=mn28k5ta3ghfc77qb4nl23tga6 for www.sotf.com/>
cookies in selenium jar:
{'domain': 'www.sotf.com', 'expiry': 1598548157, 'httpOnly': False, 'name': 'cb-enabled', 'path': '/', 'secure': False, 'value': 'enabled'}
{'domain': 'www.sotf.com', 'httpOnly': False, 'name': 'PHPSESSID', 'path': '/', 'secure': True, 'value': 'mn28k5ta3ghfc77qb4nl23tga6'}
{'domain': 'sotf.com', 'httpOnly': False, 'name': '__cfduid', 'path': '/', 'secure': True, 'value': 'd54b8f9098af12dee16136e4dc641f74e1567012133'}

关于python - 我无法在 selenium 中使用 python 请求 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57656396/

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