PDF ali slika lahko uspešno prispe skozi posrednik in nato ne uspe pri zaznavanju prepovedi. Osnovni Response v Scrapyju razkrije bajte telesa, vendar njegova lastnost text sproži napako »Response content isn't text.«

Če nameščena politika scrapy-proxy-pool brezpogojno išče response.text, jo nadomestite z različico, ki upošteva vrsto:

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

Izberite jo prek nastavitve razširitve paketa:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

To ohrani pravila politike o statusu in praznem telesu, iskanje po besedilu pa omeji na odgovore, ki to podpirajo. Podedovana politika izjem ostane na voljo.

Preglejte tudi ta preostala pravila za aplikacijo: namerno prazen odgovor 200 ali običajna napaka cilja še ne dokazujeta slabega posrednika. Pustite middleware aktiven in spremenite razvrstitev, ki je povzročila napako, namesto da bi za binarne prenose izklopili vse zaznavanje prepovedi.

Sorodni članki