request去重和随机user-agent、referer

来源:10-6 scrapy-redis源码剖析-dupefilter.py-

Pythonist

2017-12-02

老师好,

scrapy源码中对request去重是根据request中'method+url+body+header'进行sha1计算,如果是同一个url,但使用了随机User-agent导致header不一样,那么是不是就不能去重呢?或者即使同一User-agent,不断爬取时同一URL的referer也会不一样导致header不一样。

如果是分布式爬取知乎,在不同机器上使用不同账号登录,那么cookies不一样header也会不一样,还能不能对同一URL去重呢?

写回答

1回答

bobby

2017-12-04

这个问题问的很好, 理论上是这样的 但是你可以看看request_fingerprint这个函数的源码里面有个参数指明是否需要通过header去重, 默认是不通过这个的, 所以默认情况下是不会添加header去计算hash的 你也可以设置加入这个, 如果你还有更进一步的定制你就可以去重写一个计算指纹的方法就行了

2
2
bobby
回复
Mr_青先森
body内容和http协议的内容是一样的,你这里问的应该是指指纹算法用到了哪些吧 https://blog.csdn.net/weixin_42078760/article/details/105312651 你可以看看这个
2021-08-25
共2条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程