在一次真实的请求中,我们都会带着各种样的请求参数,如果将这些参数补全,那我们被ban的机率也会相应的减少很多。如何将这些参数在scrapy的项目补齐?在开始这个问题之前,我们回头来看看scrapy的架构。
从架构中我们可以清晰的看到,如果要操作这些参数,我们可以从DownloaderMiddlewares下载中间件着手,有人可能会有疑问:记得Spider中有一个start_requests的方法,不是可以写到代码中么Scrapy在架构和django都有点类似,那就是松散耦合的原则,各个功能和文件都应该各司其职。 现在我们要实现这样的一个功能,在我们请求的时候,我们可以随机的更换请求头(User-Agent)
那就是透明http代理。那是不是不用透明http代理就可以隐藏自己的身份呢?是的,只不过,普通匿名http代理虽然不知道真实身份,但是知道你是个卧底。只有高级匿名http代理才能做到如假包换。要想识别http代理服务器的等级并不复杂,只需要通过脚本程序(如ASPPHPJSP等)即可在服务器端识别出来,识别的办法就是抓数据包里的相关字段:REMOTE_ADDR,HTTP_VIA以及HTTP_X_FORWARDED_FOR。