PDF или изображение може да премине успешно през прокси и след това да се провали в откриването на блокиране. Базовият Response в Scrapy показва байтовете на тялото, но свойството му text вдига грешка “Response content isn't text.”

Ако инсталираната политика на scrapy-proxy-pool търси response.text безусловно, заменете тази политика с версия, съобразена с типа:

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

Изберете я чрез настройката за разширение на пакета:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Това запазва правилата на политиката за статус и празно тяло, като ограничава текстовото търсене до отговори, които го поддържат. Наследената политика за изключения също остава налична.

Прегледайте и тези останали правила за приложението: умишлено празен отговор 200 или обикновена грешка на дестинацията не е универсално доказателство за лошо прокси. Оставете междинния софтуер активен и променете класификацията, причинила проблема, вместо да изключвате цялото откриване на блокиране за двоични изтегляния.

Подобни статии