PDF tai kuva voi saapua välityspalvelimen kautta onnistuneesti ja epäonnistua sitten eston tunnistuksessa. Scrapyn perus-Response paljastaa rungon tavut, mutta sen text-ominaisuus nostaa virheen “Response content isn't text.”

Jos asennettu scrapy-proxy-pool-käytäntö etsii response.textistä ehdoitta, korvaa käytäntö tyypin huomioivalla versiolla:

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

Valitse se paketin laajennusasetuksella:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Tämä säilyttää käytännön tila- ja tyhjä runko -säännöt ja rajoittaa tekstihaun vastauksiin, jotka tukevat sitä. Peritty poikkeuskäytäntö on edelleen käytettävissä.

Käy läpi myös jäljelle jäävät säännöt sovelluksen kannalta: tarkoituksella tyhjä 200-vastaus tai tavallinen kohdevirhe ei aina todista huonoa välityspalvelinta. Pidä middleware aktiivisena ja muuta luokitusta, joka aiheutti virheen, sen sijaan että kytkisit kaiken eston tunnistuksen pois binaarilatauksilta.

Aiheeseen liittyvät artikkelit