前段时间项目中,为了防止被封号,对于能不登录就可以抓取的内容采用不带cookie的策略,只有必要的内容才带上cookie去访问。本来想着很简单:在每个抛出来的Request的meta中带上一个标志位,通过在CookieMiddleware中查看这个标志位,决定是否是给这个Request是否装上Cookie。实现的代码大致如下:在settings.py中的配置如下:到这里可能有些大佬已经能够看出端倪了,和我一样认为这么写没啥问题的同志们继续往下看。在这么编写完之后,我正常开启了项目,还适当调高了并发量,然后第二天发现账号被封了。在debug过程中看到在抓取不需要携带cookie的url的时候,依然携带了cookie,并且cookie是被放在了header中,经过我花费了两个多小时查看框架源码之后,终于发现了原因。

关于python scrapy中添加cookie踩坑记录

关于python scrapy中添加cookie踩坑记录

关于python scrapy中添加cookie踩坑记录

关于python scrapy中添加cookie踩坑记录