scrapy-proxy-pool: binär Äntwerten an der Spär-Erkennung behandelen
Beschränkt d'Textmusterpréiwung vum scrapy-proxy-pool op TextResponse an behält d'Entscheedungen zu Status an eidelen Body bäi.
Eng PDF oder en Bild kann iwwer e Proxy erfollegräich ukucken an duerno an der Spär-Erkennung feel schloen. Dem Scrapy seng Basis-Response weist d'Body-Bytes, awer seng text-Eegeschaft werft de Feeler „Response content isn't text.“
Wann déi installéiert scrapy-proxy-pool-Richtlinn response.text ouni Bedingung duerchsicht, ersetzt dës Richtlinn duerch eng typesbewosst Versioun:
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
Wielt se iwwer d'Erweiderungsastellung vum Pak:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Dëst behält d'Status- an eidel-Body-Regele vun der Richtlinn bäi an beschränkt d'Textsich op Äntwerten, déi se ënnerstëtzen. Déi geierft Ausnamerichtlinn bleift verfügbar.
Kuckt déi reschtlech Regele fir d'Applikatioun och un: eng bewosst eidel 200-Äntwert oder en normale Bestemmungsfeeler ass net ëmmer de Beweis fir e schlechten Proxy. Loosst d'Middleware aktiv a ännert d'Klassifizéierung, déi de Feeler verursaacht huet, amplaz all Spär-Erkennung fir binär Downloads auszeschalten.