gpt4 book ai didi

python - 在 Scrapy 中保持爬行之间的经过身份验证的 session 以进行开发

转载 作者:太空狗 更新时间:2023-10-30 02:41:52 25 4
gpt4 key购买 nike

我使用的是 Scrapy 爬虫,它在启动时通过登录表单进行身份验证。然后它会使用这个经过身份验证的 session 进行抓取。

在开发过程中,我通常会多次运行蜘蛛来测试它。在每次运行开始时进行身份验证会向网站的登录表单发送垃圾邮件。该网站通常会强制重置密码作为回应,我怀疑如果这种情况继续下去,它将禁止该帐户。

因为 cookie 会持续几个小时,所以没有充分的理由在开发过程中经常登录。要解决密码重置问题,在开发过程中在运行之间重新使用经过身份验证的 session /cookie 的最佳方法是什么?理想情况下,蜘蛛只会在持久 session 已过期时尝试进行身份验证。

编辑:

我的结构是这样的:

def start_requests(self):
yield scrapy.Request(self.base, callback=self.log_in)

def log_in(self, response):
#response.headers includes 'Set-Cookie': 'JSESSIONID=xx'; Path=/cas/; Secure; HttpOnly'
yield scrapy.FormRequest.from_response(response,
formdata={'username': 'xxx',
'password':''},
callback=self.logged_in)
def logged_in(self, response):
#request.headers and subsequent requests all have headers fields 'Cookie': 'JSESSIONID=xxx';
#response.headers has no mention of cookies
#request.cookies is empty

当我在 Chrome 中运行相同的页面请求时,在“Cookies”选项卡下列出了大约 20 个字段。

documentation这里看起来很瘦。我尝试根据成功登录返回的值在所有传出请求的 header 字典上设置一个字段 'Cookie': 'JSESSIONID=xxx' ,但这会弹回登录屏幕

最佳答案

事实证明,对于临时开发解决方案,这比我想象的要容易。使用 cookieString = request.headers['Cookie'] 获取 cookie 字符串,保存,然后在后续的传出请求中加载它并执行:

request.headers.appendlist('Cookie', cookieString)

关于python - 在 Scrapy 中保持爬行之间的经过身份验证的 session 以进行开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105849/

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