scrapy-proxy-pool: kushughulikia majibu ya binary katika utambuzi wa marufuku
Punguza ukaguzi wa mchoro wa maandishi wa scrapy-proxy-pool hadi TextResponse huku ukihifadhi maamuzi ya hali na mwili tupu.
PDF au picha inaweza kufika kwa mafanikio kupitia proksi kisha kushindwa katika utambuzi wa marufuku. Response ya msingi ya Scrapy inaonyesha baiti za mwili, lakini sifa yake ya text inazua hitilafu “Response content isn't text.”
Ikiwa sera ya scrapy-proxy-pool iliyosakinishwa inatafuta response.text bila masharti, badilisha sera hiyo na toleo linalotambua aina:
from scrapy.http import TextResponse
from scrapy_proxy_pool.policy import BanDetectionPolicy
class BinaryAwarePolicy(BanDetectionPolicy):
def response_is_ban(self, request, response):
if isinstance(response, TextResponse):
if self.BANNED_PATTERN.search(response.text):
return True
if response.status not in self.NOT_BAN_STATUSES:
return True
return response.status == 200 and not response.body
Ichague kupitia mpangilio wa kiendelezi wa kifurushi:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Hii huhifadhi kanuni za sera za hali na mwili tupu na huzuia utafutaji wa maandishi kwa majibu yanayoiunga mkono. Sera ya msamaha iliyorithiwa inabaki kupatikana.
Pitia pia kanuni zilizosalia kwa ajili ya programu: jibu la 200 tupu kwa makusudi au hitilafu ya kawaida ya lengwa si ushahidi wa proksi mbaya kila wakati. Acha middleware ikiwa hai na ubadilishe uainishaji uliosababisha kushindwa, badala ya kuzima utambuzi wote wa marufuku kwa upakuaji wa binary.