Ich versuche, einen Schaber für Cloudflare geschützter Website Cloudflare Schutz mit scrapy und scrapy_fake_useragent
cfscrape
python extension erstellen zu umgehen, um mit cfscrape
, privoxy
und tor und scrapy_fake_useragent
Teile USER_AGENT zwischen scrapy_fake_useragent und cfscrape scrapy Erweiterung
Ich verwende injizieren zufällige reale USER_AGENT Informationen in die Header.
Wie in der cfscrape-Dokumentation angegeben: Sie müssen die gleiche User-Agent-Zeichenfolge verwenden, um Tokens zu erhalten und Anfragen mit diesen Tokens zu stellen, da Cloudflare Sie sonst als Bot kennzeichnet.
To collect cookie needed by `cfscrape`, i need to redefine the `start_request` function into my spider class, like this :
def start_requests(self):
cf_requests = []
for url in self.start_urls:
token, agent = cfscrape.get_tokens(url)
self.logger.info("agent = %s", agent)
cf_requests.append(scrapy.Request(url=url,
cookies= token,
headers={'User-Agent': agent}))
return cf_requests
Mein Problem ist, dass die von start_requests
gesammelt user_agent
nicht das gleiche ist, dass die user_agent
zufällig durch scrapy_fake_useragent
ausgewählt, wie Sie sehen können:
017-01-11 12:15:08 [airports] INFO: agent = Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0
2017-01-11 12:15:08 [scrapy.core.engine] INFO: Spider opened
2017-01-11 12:15:08 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-01-11 12:15:08 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-01-11 12:15:08 [scrapy_fake_useragent.middleware] DEBUG: Assign User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10 to Proxy http://127.0.0.1:8118
I definiert meine Erweiterung in settings.py
dieser Reihenfolge:
RANDOM_UA_PER_PROXY = True
HTTPS_PROXY = 'http://127.0.0.1:8118'
COOKIES_ENABLED = True
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
'flight_project.middlewares.ProxyMiddleware': 100,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':110,
}
Ich brauche das gleiche user_agent
, also wie ca n ich pass/bekomme den User-Agenten zufällig durch scrapy_fake_useragent
in die start_requests
-Methode für cfscrape
Extension?
Versuchen geben 'RandomUserAgentMiddleware' 50 Genehmigung –