Web Scraping w / Scrapy-Splash - разные результаты для разных прокси? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть список прокси-адресов, которые я выбираю случайным образом и добавляю в SplashRequest внутри паука Scrapy. Чтобы подтвердить, что это работает, я решил попробовать очистить результаты What is My IP? . Поскольку прокси были выбраны случайным образом, я заметил три разных ответа на основе IP:

  1. 502 Bad Gateway
  2. 200 ОК, где body говорит: «Извините, whatismyip.com недоступен, потому что он относится к категории security.nettools. "
  3. 200 ОК, верный правильный адрес прокси

Если кто-нибудь может мне объяснить, что происходит в # 1 и #2, это было бы очень ценно!

Редактировать

У меня есть экземпляр Splash в контейнере Docker, и я создаю SplashReqeuest (не запрос Scrap)и подача на него прокси IP, выбранного случайным образом. Для некоторых IP-адресов я могу подтвердить, что он передается в запрос (см. Пункт 3), так что, похоже, это подтверждает правильность этого подхода - случайный IP-адрес прокси равен , который передается на SplashRequest. Однако для некоторых IP-адресов я получаю 502 Bad Gateway или тот странный 200 Ok, где "What Is My IP" не возвращает IP-адрес.

Результат согласован для данного IP-адреса, т. Е. Если адрес X дает результат 1, он всегда дает результат 1.

1 Ответ

0 голосов
/ 04 октября 2019

Я использовал скраб-всплеск всего несколько раз, но сильно полагаюсь на скрап. Я предполагаю, что вы используете экземпляр-заставку из scrapinghub. Я думаю, что это из-за ip, который фактически используется для выполнения запроса.

Один из примеров, который я имею, - это попытка разобраться с покупками в Google. Google отслеживает IP обратно к источнику. Так что независимо от того, как мой IP-пул находится в США. Некоторые ips отслеживают другие страны и возвращают результаты для этого округа. Скажем, у нас есть код ниже.

def start_request:
  yield scrapy.Request(url='https://www.googleshopping.com/shopping/ID','splash':{})

Это вызовет scrapy для создания запроса. Даже если запрос был сделан на вашем устройстве, он отправляет этот запрос на сервер-заставку. Который может жить в докере или инсталляционном экземпляре на чистящем узле, где бы он ни был. К этому экземпляру заставки будет привязан собственный IP-адрес, и именно этот Google увидит Google. Теперь, если вы включите прокси в этот запрос, этот ip может быть из любой точки мира в зависимости от того, кто его размещает, что еще больше запутало бы ip. Короче говоря, запрос может не приходить с того IP-адреса, с которого, как вы думаете, он поступил.

...