Ang PDF o larawan ay maaaring matagumpay na dumating sa pamamagitan ng proxy at pagkatapos ay mabigo sa pagtukoy ng ban. Ang base Response ng Scrapy ay naglalantad ng body bytes, ngunit ang property nitong text ay nagtataas ng error na “Response content isn't text.”

Kung ang naka-install na patakaran ng scrapy-proxy-pool ay naghahanap sa response.text nang walang kondisyon, palitan ang patakarang iyon ng bersyong nakakaalam ng uri:

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

Piliin ito sa pamamagitan ng setting ng extension ng package:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Pinapanatili nito ang mga tuntunin ng patakaran sa status at walang-laman na katawan at nililimitahan ang paghahanap ng teksto sa mga tugon na sumusuporta dito. Ang namana na patakaran sa pagbubukod ay nananatiling available.

Suriin din ang mga natitirang tuntuning iyon para sa aplikasyon: ang 200 na tugon na sadyang walang laman o karaniwang error sa destinasyon ay hindi laging ebidensya ng masamang proxy. Iwanang aktibo ang middleware at baguhin ang klasipikasyong nagdulot ng kabiguan, sa halip na patayin ang lahat ng pagtukoy ng ban para sa mga binary na download.

Kaugnay na mga artikulo