蜘蛛如何在请求过程中绑定登录cookie,用户代理和代理?

时间:2016-07-08 07:53:37

标签: cookies scrapy web-crawler

我想抓取一个具有强大安全协议并希望尽快抓取数据的网站。因此我认为我需要一个多登录cookie,多用户代理和多代理爬虫。

我有几十个用户名和密码,我可以使用每个用户名和密码登录并获取所有cookie。为了隐藏我的爬虫的身份,我想我也应该替换用户代理设置和我的IP。我找到了很多用户代理和代理。

我了解到每次向服务器发送请求时都需要cookie,并且该cookie应具有相同的标识并包含先前请求的信息和相应的响应。我已经获知了如何通过请求传递它而无需从this回复登录。我知道两种登录方式,一种是在scrapy之外(通过将cookie传递给middleware.py文件中的cookiesmiddleware:

from cookies import cookies # script written to login some accounts and return the cookies
import random

class CookiesMiddleware(object):
    def process_request(self, request, spider):
        cookie = random.choice(cookies)
        request.cookies = cookie

)和另一个inside

在middleware.py文件中还有更多内容我将用户代理随机地传递给scrapy请求的cookie。

我的问题是:如果我按照上述方式随机传递cookie,每次发送请求时,一只蜘蛛会获得相同的cookie吗?如果不是,服务器端会将我检测为机器人并阻止我。更糟糕的是,这同样适用于用户代理和代理。如何从登录开始绑定每个三位一体(登录cookie,用户代理和代理),在水平和垂直维度上扩展上述答案?

更准确地说,我应该以{cookies= user1_cookie}还是{ meta={'cookiejar': user1_cookie},的形式传递登录Cookie?我应该在元参数中传递用户代理和代理吗?

感谢。请将我指向正确的方向,任何建议都会受到高度赞赏和赞赏。

1 个答案:

答案 0 :(得分:0)

好像你正在寻找cookiejar。它允许您在单个蜘蛛会话中存储多个cookie会话。

将随机cookie用于中间件是一个坏主意,因为大多数情况下cookie会存储您的整个浏览会话。