python关于Cookie有效期怎么保持
某网站的COOKIE有效期为 浏览器会话结束时,我在python中如果已经获取到了有效cookie,怎么让该cookie有效期一直保持下去。包括我把软件挂在那里几个小时不动。用request 的哪个方法可以解决? 我现在是用的方法时创建一个线程,每10分钟用获取到的cookie去请求一次网站主页。感觉有点low requests session有类似的作用,之前我遇到过类似的问题,是这么解决的。你可以试试import requests
import time
mycookie = { "PHPSESSID":"56v9clgo1kdfo3q5q8ck0aaaaa" }
x = requests.session()
x.get("http://127.0.0.1:80",cookies = mycookie)
time.sleep(5)
x.get("http://127.0.0.1:80")
来源:https://www.jianshu.com/p/264955856e61 wkdxz 发表于 2023-2-20 15:11
requests session有类似的作用,之前我遇到过类似的问题,是这么解决的。你可以试试
我在线程A中获取到了COOKIE, 几个小时后在线程B用这个cookie。如果线程A已经终止了,线程A用session获取的cookie 能维持到线程B使用嘛 如果有多个网站有不同的sessionID 是不是需要创建多个session 放在线程中保持?还是说session实例化并添加cookie请求过之后。即使线程终止了。session还能一直保持会话呀? session保不保持不是服务端那边决定的吗?如果cookie里没告诉你多久过期就只能预估来更新告诉你的话就快过期的时候再去申请一次呗 具体什么请求 需要针对网站具体分析啊。有效期持续到浏览器会话结束大概率是cookie被清了吧 本帖最后由 cnwutianhao 于 2023-2-20 16:10 编辑
如果某网站的Cookie有效期为浏览器会话结束时,那么在Python中发送HTTP请求时,如果没有设置Cookie的过期时间,那么这个Cookie也只会在浏览器会话结束前有效。
如果你想让该Cookie一直保持下去,可以在Python中手动设置Cookie的过期时间,将其设置为未来的一个时间点,以确保该Cookie在该时间点之前一直有效。
在使用requests库发送HTTP请求时,你可以将Cookie的过期时间设置为当前时间加上一个足够长的时间段,比如10天,示例如下:
``` python
import requests
import datetime
cookie = {'name': 'value', 'expires': datetime.datetime.now() + datetime.timedelta(days=10)}
response = requests.get('http://example.com', cookies=cookie)
```
这样设置之后,该Cookie将在当前时间的10天后过期。你可以根据需要将该时间段调整为合适的值。
另外,如果你需要长时间保持该Cookie的有效性,可以使用类似于你当前所使用的方式,每隔一段时间发送一次请求来保持会话的活跃。但是,这种方式会占用不必要的带宽和服务器资源,因此最好不要过于频繁地发送请求。可以适当调整请求的时间间隔,以达到平衡保持会话活跃和减少不必要请求的目的。 你可以考虑使用无头浏览器,如Selenium或Puppeteer。这些工具可以模拟完整的浏览器环境,包括COOKIE和会话,从而可以更准确地模拟用户在网站上的行为。
下面是使用Selenium实现这个过程的示例代码:
from selenium import webdriver
# 创建浏览器对象
options = webdriver.ChromeOptions()
options.add_argument('--headless')# 无头模式
browser = webdriver.Chrome(options=options)
# 添加COOKIE到浏览器会话
cookies = {'cookie_name': 'cookie_value'}
for name, value in cookies.items():
browser.add_cookie({'name': name, 'value': value})
# 访问网站主页
browser.get('http://example.com')
在这个例子中,我们首先使用Selenium创建一个无头Chrome浏览器对象,并将COOKIE添加到浏览器会话中。然后,我们使用get()方法访问网站主页。由于这是一个完整的浏览器环境,所以会话会持续活动,从而保持COOKIE有效。
请注意,使用无头浏览器可能会对计算资源造成一定的负担,因此,这种方法适用于小规模的任务。如果你需要在大规模的任务中使用这种方法,你可以考虑使用多线程或分布式计算来加速处理速度。 本帖最后由 1073 于 2023-2-20 19:08 编辑
Jacen 发表于 2023-2-20 16:33
你可以考虑使用无头浏览器,如Selenium或Puppeteer。这些工具可以模拟完整的浏览器环境,包括COOKIE和会话 ...
无头浏览器{:1_918:}{:1_918:} 请问解决了吗? 是什么方法我也在学
页:
[1]