Как делать ботов, которые не будут палиться, как боты?
Назрел вопрос, исключительно в образовательных целях, как делать ботов на Python, которые не будут палиться различными сервисами.
Искал в интернете информации очень мало. Задача такая, как сделать бота, который максимально похож на обычного юзера и при этом, чтобы бот не ел огромное количество ресурсов. Мб есть какая литература, или полезные посты? За комплексный ответ буду признателен)
Смотря что за сервис.
Если сайт Васин - тогда шлите любые запросы через requests.
Если сайт средней конторки - selenium.
Если сайт крупнее средней конторки - используете библиотеки автоматизации(вычисляете координаты и кликайте), например, PyAutoGui
Если конторка серьёзная - там могут в критических местах подключать нейросети и анализировать поведение пользователя. И шаг в сторону и капча.
Типо facebook). Вообще если уже конкретизировать, то надо понимать какие запросы он шлет на комп и тд. А нейросети нейросетями, тут нестандартный и изменяющийся подход(и по пару недель думаю жить будет).
Сергей Карбивничий, и по каким критериям они будут банить? Это ровной такой же запрос, который жлет их же фронтенд. По отсутствию отпечатка при первичной загрузке хост-страницы? Выстрел себе же в ногу.
Сергей Горностаев, очень далеко не везде. В тех же Google Maps её нет. Они по внутреннему API гоняют зашифрованные raw данные, которые дешифруют на клиенте. В целом с десяток JS функций задействуются, которые с минимальной модификацией запускаются в интерпретаторе pyduktape. Плюс огромному количеству каталогов/сервисов вообще в принципе плевать на парсинг. Тот же tripadvisor, или craigslist, как и многие другие, даже не блокируют IP за большое кол-во запросов. Было дело за сутки выгребал около 4 млн. страниц без единого прокси.
Сейчас пишу ботов для автоматизации ставок у крупных букмекеров, они в свою очередь ооочень не любят подобное; обхожусь запросами, в то время как решения с использованием браузера банятся очень быстро.
Если вам нужен действительно беспалевный бот, то намного дешевле нанять людей. С другой стороны, бот на то и бот, чтобы отличаться от человека. Поэтому его всегда можно вычислить.
Несколько мыслей.
1) Бот должен идентифицироваться как браузер. Тоесть генерировать все хедеры как ваш Opera/FireFox/Edge.
2) Бот должен отрабатывать все входящие JavaScript на страничке.
3) Бот должен кликать "задумчиво". Тоесть иммитировать поведение обычного чела. С паузами.
Насчет литературы - вряд-ли. Слишком специфично. Но тут КМК нужны разумные пределы когда стоит остановиться. И может быть такой бот действительно будет стоить дороже чем 1000 китайцев в час.
1) Бот должен идентифицироваться как браузер. Тоесть генерировать все хедеры как ваш Opera/FireFox/Edge.
Не только генерировать, но и правильно отвечать на хедеры сервера. Там в бэкграунде иногда такой обмен информацией идёт, о которой не продвинутый пользователь и не догадывается.
То есть, лазить нужно через реальные браузеры. И есть ощущение, что selenium не поддерживает весь спектр обмена такими заголовками.