Превысить предел запроса при обходе веб-сайта

Я работаю над веб-искателем, который индексирует сайты, которые не хотят индексироваться.

Моя первая попытка: Я написал crawler С#, который проходит через каждую страницу и загружает их. Это привело к тому, что мой IP был заблокирован их серверами в течение 10 минут.

Я переместил его на amazon EC2 и написал распределенный питон script, который запускает около 50 экземпляров. Это остается чуть выше их порога загрузки меня. Это также стоит около $1900 в месяц...

Я вернулся к своей первоначальной идее и поместил ее в сокращенную версию сети TOR. Это сработало, но было очень медленно.

У меня нет идей. Как я могу пройти мимо них, блокируя меня для повторных запросов.

Я говорю "блок", они на самом деле дают мне случайную 404 не найденную ошибку на страницах, которые определенно существуют. Он случайный и начинается только после того, как я прохожу около 300 запросов через час.

Ответ 1

ОК, в первую очередь: если веб-сайт не хочет, чтобы вы слишком часто его обходили, то вы не должны! Это основная вежливость, и вы всегда должны стараться придерживаться ее.

Тем не менее, я понимаю, что есть некоторые веб-сайты, такие как Google, которые зарабатывают деньги, сканируя ваш сайт в течение всего дня, и когда вы пытаетесь обходить Google, они блокируют вас.

Решение 1: Прокси-серверы

В любом случае альтернативой получению кучи машин EC2 является получение прокси-серверов. Прокси-серверы намного дешевле EC2, случай и точка: http://5socks.net/en_proxy_socks_tarifs.htm

Конечно, прокси-серверы не такие быстрые, как EC2 (ширина полосы частот), но вы должны иметь возможность балансировать, когда вы получаете аналогичную или более высокую пропускную способность, чем ваши 50 экземпляров EC2, существенно меньше, чем вы сейчас платим. Это включает в себя поиск доступных прокси и поиск тех, которые дадут вам аналогичные результаты. Здесь следует отметить, что, как и вы, могут быть другие люди, использующие прокси-службу для сканирования обтекаемого вами сайта, и они могут быть не такими умными в отношении того, как они сканируют его, поэтому весь прокси-сервер может быть заблокирован из-за к активности какого-либо другого клиента прокси-сервиса (я лично его видел).

Решение 2: You-Da-Proxy!

Это немного сумасшедший, и я не сделал математику позади этого, но вы могли бы начать прокси-сервис самостоятельно и продавать прокси-услуги другим. Вы все равно не можете использовать всю пропускную способность вашего компьютера EC2, поэтому лучший способ сократить расходы - это сделать то, что делает Amazon: субаренда оборудования.

Ответ 2

Использование прокси-серверов является, безусловно, наиболее распространенным способом решения этой проблемы. Существуют и другие решения более высокого уровня, которые предоставляют своего рода "загрузку страницы в качестве сервиса", гарантирующую получение "чистых" страниц (не 404 и т.д.). Один из них называется Crawlera (предоставленный моей компанией), но могут быть и другие.

Ответ 3

В этом случае я обычно использую https://gimmeproxy.com, который проверяет прокси каждую секунду.

Чтобы получить рабочий прокси, вам нужно просто сделать следующий запрос:

https://gimmeproxy.com/api/getProxy

Вы получите ответ JSON со всеми прокси-данными, которые вы можете использовать позже по мере необходимости:

{
  "supportsHttps": true,
  "protocol": "socks5",
  "ip": "156.182.122.82:31915",
  "port": "31915",
  "get": true,
  "post": true,
  "cookies": true,
  "referer": true,
  "user-agent": true,
  "anonymityLevel": 1,
  "websites": {
    "example": true,
    "google": false,
    "amazon": true
  },
  "country": "BR",
  "tsChecked": 1517952910,
  "curl": "socks5://156.182.122.82:31915",
  "ipPort": "156.182.122.82:31915",
  "type": "socks5",
  "speed": 37.78,
  "otherProtocols": {}
}

Ответ 4

Всякий раз, когда мне приходится передавать лимит запросов на страницы, которые я просматриваю, я обычно делаю это с помощью proxycrawl, поскольку он самый быстрый способ пойти. Вам не нужно ни о чем заботиться, инфраструктура, ips, блокироваться и т.д.

У них есть простой API, который вы можете назвать столь же частым, как вы хотите, и они всегда вернут вам действительный ответ, пропускающий ограничения.

https://api.proxycrawl.com?url=https://somesite.com

До сих пор я использовал его в течение нескольких месяцев и отлично работал. У них даже есть бесплатный план.

Ответ 5

Определенно прокси, вы должны использовать сеть резидентного прокси. таким образом, вы проходите через реальных пользователей, они не будут часто блокироваться.

Попробуйте это: https://luminati.io/?affiliate=L_idanb