Как сканировать сайты без блокировки? - PullRequest
0 голосов
/ 17 мая 2019

Я очень часто сканирую сайты со скоростью сотен запросов в час.

  1. Как сделать поведение сканера более похожим на человека?
  2. Как не попасть на радар при обнаружении ботов?

В настоящее время сайт сканирует селен, хром.

Просьба предложить.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Что ж, вам придется приостановить выполнение сценария между циклами.

import time
time.sleep(1)
time.sleep(N)

Таким образом, он может гипотетически работать следующим образом.

import json,urllib.request
import requests
import pandas as pd
from string import ascii_lowercase
import time

alldata = []
for c in ascii_lowercase:
    response = requests.get('https://reservia.viarail.ca/GetStations.aspx?q=' + c)
    json_data = response.text.encode('utf-8', 'ignore') 
    df = pd.DataFrame(json.loads(json_data), columns=['sc', 'sn', 'pv'])  # etc., 
    time.sleep(3)
    alldata.append(df)

Или искать API для захватаданные с URL, на который вы нацеливаетесь.Вы не опубликовали реальный URL, поэтому невозможно точно сказать, открыт API или нет.

0 голосов
/ 17 мая 2019

Существует много способов, с помощью которых сайты могут обнаружить, что вы пытаетесь их сканировать.Самым простым, вероятно, является IP.Если вы делаете запросы слишком быстро с того же IP, вы можете быть заблокированы.Вы можете ввести (случайные) задержки в свой сценарий, чтобы попытаться выглядеть медленнее.

Чтобы продолжить работать как можно быстрее, вам придется использовать разные IP-адреса.Для этого можно использовать множество прокси и VPN-сервисов.

...