Ein PDF eller eit bilete kan kome gjennom ein proxy og deretter feile i banregistreringa. Basis-Response i Scrapy syner kroppsbyta, men text-eigenskapen reiser feilen «Response content isn't text.»

Viss den installerte scrapy-proxy-pool-policyen søkjer i response.text utan vilkår, byt ut policyen med ein typebevisst versjon:

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

Vel han via utvidingsinnstillinga i pakken:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Dette behald reglane for status og tom kropp i policyen, og avgrens tekstsøket til svar som støttar det. Den arva unntakspolicyen er framleis tilgjengeleg.

Gå også gjennom dei resterande reglane for applikasjonen: eit medvite tomt 200-svar eller ein vanleg destinasjonsfeil er ikkje alltid prov på ein dårleg proxy. La middleware vere aktivt og endre klassifiseringa som førte til feilen, i staden for å slå av all banregistrering for binære nedlastingar.

Relaterte artiklar