Një PDF ose imazh mund të arrijë me sukses përmes një proxy dhe më pas të dështojë brenda zbulimit të bllokimeve. Response bazë i Scrapy ekspozon bajtët e trupit, por vetia e tij text ngre gabimin «Response content isn't text.»

Nëse politika e instaluar e scrapy-proxy-pool kërkon response.text pa kushte, zëvendësojeni atë politikë me një version që njeh llojin:

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

Zgjidheni përmes cilësimit të shtesës së paketës:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Kjo ruan rregullat e politikës për statusin dhe trupin bosh dhe e kufizon kërkimin tekstual te përgjigjet që e mbështesin. Politika e trashëguar e përjashtimeve mbetet e disponueshme.

Shqyrtoni edhe ato rregulla të mbetura për aplikacionin: një përgjigje 200 bosh qëllimisht ose një gabim i zakonshëm destinacioni nuk provojnë gjithmonë një proxy të keq. Lëreni middleware aktiv dhe ndryshoni klasifikimin që shkaktoi dështimin, në vend që të çaktivizoni të gjithë zbulimin e bllokimeve për shkarkimet binare.

Artikuj të ngjashëm