Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Всем  \o

Пытаюсь провести синтаксический анализ страницы со статистикой по героям (достать проценты побед, количество игр, дату последней игры на герое), но при запросе dotabuff выдаёт ошибку 429 "Слишком много запросов", хотя я просто один раз запрашиваю, я не ползаю по всем страницам. попробовал подождать с полчаса-час - та же ошибка.

Похоже, что dotabuff видит, что запрос исходит не от человека, и тупо его блочит. Слышал, что когда нужно искать большое количество информации, людям приходится использовать безголовые браузеры типа Selenium и использовать их совместно с VPN, которые специально предназначены для них. Неужели так всё запущено?

Наверняка кто-то уже сталкивался с такой проблемой вообще и на dotabuff в частности. Как обойти защиту dotabuff? Писать в службу поддержки?

Tor4illa

Пользователь

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Tor4illa

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Ты в лоб парсишь (без api)? У тебя html код на выходе? 

 

Я, когда мне нужно спарсить сайт, открывал документацию по его api + гуглил примеры

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Tor4illa сказал(а):

Ты в лоб парсишь (без api)? У тебя html код на выходе? 

 

Я, когда мне нужно спарсить сайт, открывал документацию по его api + гуглил примеры

Нажмите, чтобы раскрыть...

А вот, кстати, у dotabuff есть API? Я просто не нашёл у них. Это в поддержке об этом спросить можно?

На выходе html код, да. Потом его в BeautifulSoup (на python если важно) и вижу, что там 429 ошибка.

Tor4illa

Пользователь

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Tor4illa

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Pro100 Bot сказал(а):

А вот, кстати, у dotabuff есть API? Я просто не нашёл у них. Это в поддержке об этом спросить можно?

На выходе html код, да. Потом его в BeautifulSoup (на python если важно) и вижу, что там 429 ошибка.

Нажмите, чтобы раскрыть...

Понятия не имею, но можешь загуглить (dotabuff api). 

Дав принципе не важно через что ты обрабатываешь html. Я попробую через свою прогу сделать запрос страницы, скинешь ссылку?

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Tor4illa сказал(а):

Понятия не имею, но можешь загуглить (dotabuff api). 

Дав принципе не важно через что ты обрабатываешь html. Я попробую через свою прогу сделать запрос страницы, скинешь ссылку?

Нажмите, чтобы раскрыть...

https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking

В принципе, я потом, возможно, сделаю, чтобы по разным id игроков прога лазила, но пока даже с одной страницей не выходит. И после знака вопроса тоже необязательный параметр (если пользователь введёт, что хочет по рейтинговым анализ, то будет как указал ссылка, если по всем играм, то всё, что до ?). Я делал запрос только по ссылке, которую указал выше.

Заранее спасибо^^

DrZoidberg

Пользователь

Регистрация: 17.01.2017

Сообщения: 1205

Рейтинг: 457

Нарушения: 50

DrZoidberg

Регистрация: 17.01.2017

Сообщения: 1205

Рейтинг: 457

Нарушения: 50

Tor4illa

Пользователь

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Tor4illa

Регистрация: 26.04.2020

Сообщения: 783

Рейтинг: 125

Pro100 Bot сказал(а):

https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking

В принципе, я потом, возможно, сделаю, чтобы по разным id игроков прога лазила, но пока даже с одной страницей не выходит. И после знака вопроса тоже необязательный параметр (если пользователь введёт, что хочет по рейтинговым анализ, то будет как указал ссылка, если по всем играм, то всё, что до ?). Я делал запрос только по ссылке, которую указал выше.

Заранее спасибо^^

Нажмите, чтобы раскрыть...

Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

хз чел оно тупо курлом работает

Спойлер

запрашиваешь как-то криво, хз

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Tor4illa сказал(а):

Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так

Нажмите, чтобы раскрыть...
Renderhauer сказал(а):

хз чел оно тупо курлом работает

Спойлер

запрашиваешь как-то криво, хз

Нажмите, чтобы раскрыть...

Спасибо за помощь!

Но, видимо, не совсем во мне проблема, а в провайдере, потому что:

Д2ру открывает, а дотабафф нет.

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Pro100 Bot сказал(а):

Спасибо за помощь!

Но, видимо, не совсем во мне проблема, а в провайдере, потому что:

Д2ру открывает, а дотабафф нет.
Нажмите, чтобы раскрыть...

Win+R

powershell

curl https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking

скрин сюда

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

DrZoidberg сказал(а):
Нажмите, чтобы раскрыть...

Спасибо за ссылку! Кстати, она у меня тоже в обычном браузере не открывалась. Только в торе открылась)


Renderhauer сказал(а):
Нажмите, чтобы раскрыть...
Спойлер

Поменял провайдера - ничего не поменялось. У меня проблема с настройками на компьютере, например, брандмауэр не пускает или что это?

@Renderhauer 

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Pro100 Bot сказал(а):

Поменял провайдера - ничего не поменялось. У меня проблема с настройками на компьютере, например, брандмауэр не пускает или что это?

@Renderhauer 

Нажмите, чтобы раскрыть...

понятия не имею

но давай на всякий случай в нем же tracert на тот же урл pekaReally.png 

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Renderhauer сказал(а):

понятия не имею

но давай на всякий случай в нем же tracert на тот же урл pekaReally.png 

Нажмите, чтобы раскрыть...
Спойлер

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Pro100 Bot сказал(а):
Спойлер
Нажмите, чтобы раскрыть...

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

лан, не суть

я щас попробовал с приложки для типа дудоса (pekaReally.png) реквестик пульнуть тупо на урл, у меня тож заругался

ща чуть подумаю, не уходи далеко pekaReally.png 

Ramdesu

Пользователь

Регистрация: 05.07.2018

Сообщения: 716

Рейтинг: 404

Ramdesu

Регистрация: 05.07.2018

Сообщения: 716

Рейтинг: 404

Pro100 Bot сказал(а):
Спойлер
Нажмите, чтобы раскрыть...

1. у тебя все ок с DNS? (попробуй гугловский 8.8.8.8 днс вбить в настройках)
2. попробуй взять урл в кавычки (curl "blabla")

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

короче когда кидаешь реквест - кидай с хедерами pekaReally.png

у меня с этими за пять секунд он сожрал сто реквестов и не подавился, ему вообще было ни разу не too many requests pekaReally.png

Спойлер

 

UPD: достаточно одного только USER-AGENT, значение вообще любое

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Pro100 Bot сказал(а):

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

Нажмите, чтобы раскрыть...

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

перед началом квери ставится ?, потом параметры=значения, разделенные &

типа даем это

5aQOxAt.png

получаем это

OGhu8PI.png

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Ramdesu сказал(а):

1. у тебя все ок с DNS? (попробуй гугловский 8.8.8.8 днс вбить в настройках)
2. попробуй взять урл в кавычки (curl "blabla")

Нажмите, чтобы раскрыть...

1. Попробовал - не помогло

2. Один раз powershell как-то странно себя повёл. Потом стал переделывать, пришлось перезапускать его - не помогло.

Но всё равно спасибо!

Renderhauer сказал(а):

короче когда кидаешь реквест - кидай с хедерами pekaReally.png

у меня с этими за пять секунд он сожрал сто реквестов и не подавился, ему вообще было ни разу не too many requests pekaReally.png

Спойлер

 

UPD: достаточно одного только USER-AGENT, значение вообще любое

Нажмите, чтобы раскрыть...

Спасибо! Я пробовал получить хэдеры через запрос (получил {'Connection': 'close', 'Content-Length': '1105', 'Server': 'Varnish', 'Retry-After': '0', 'Accept-Ranges': 'bytes', 'Date': 'Tue, 29 Nov 2022 22:38:08 GMT', 'Via': '1.1 varnish', 'X-Served-By': 'cache-mrs10546-MRS', 'X-Cache': 'MISS', 'X-Cache-Hits': '0', 'X-Timer': 'S1669761488.218251,VS0,VE110'} ), а потом сделать запрос уже с ними. Код обрабатывался несколько минут и я остановил выполнение. Потом смотрю, ты апдейт сделал. Поставил {'user-agent': 'Mozilla/5.0'} и всё заработало. Ещё раз спасибо!

Так понимаю, мы просто шлём в хедере, что у нас движок Gecko, и dotabuff успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?

Renderhauer сказал(а):

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

перед началом квери ставится ?, потом параметры=значения, разделенные &

типа даем это

5aQOxAt.png

получаем это

OGhu8PI.png

Нажмите, чтобы раскрыть...

Да, удобно. Как раз могу передать, хочу ли я по рейтинговым играм сортировать или ещё как. А альтернативно надо будет post-запрос делать, так понимаю.

Tor4illa сказал(а):

Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так

Нажмите, чтобы раскрыть...

А вот если не секрет, твоя программа как-то мимикрировала под работу браузера? Те же хедеры, может, использовал?

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

Pro100 Bot сказал(а):

1. Попробовал - не помогло

2. Один раз powershell как-то странно себя повёл. Потом стал переделывать, пришлось перезапускать его - не помогло.

Но всё равно спасибо!

Спасибо! Я пробовал получить хэдеры через запрос (получил {'Connection': 'close', 'Content-Length': '1105', 'Server': 'Varnish', 'Retry-After': '0', 'Accept-Ranges': 'bytes', 'Date': 'Tue, 29 Nov 2022 22:38:08 GMT', 'Via': '1.1 varnish', 'X-Served-By': 'cache-mrs10546-MRS', 'X-Cache': 'MISS', 'X-Cache-Hits': '0', 'X-Timer': 'S1669761488.218251,VS0,VE110'} ), а потом сделать запрос уже с ними. Код обрабатывался несколько минут и я остановил выполнение. Потом смотрю, ты апдейт сделал. Поставил {'user-agent': 'Mozilla/5.0'} и всё заработало. Ещё раз спасибо!

Так понимаю, мы просто шлём в хедере, что у нас движок Gecko, и dotabuff успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?

Да, удобно. Как раз могу передать, хочу ли я по рейтинговым играм сортировать или ещё как. А альтернативно надо будет post-запрос делать, так понимаю.

А вот если не секрет, твоя программа как-то мимикрировала под работу браузера? Те же хедеры, может, использовал?

Нажмите, чтобы раскрыть...

да, бывает: требуют например какой-нибудь js выполнить, по косвенным признакам определяют вроде движения мышки

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

 

Renderhauer сказал(а):

хз чел оно тупо курлом работает

Спойлер

запрашиваешь как-то криво, хз

Нажмите, чтобы раскрыть...

страшная вещь кстати в том, что это не совсем curl pekaReally.png?1619501122

 

Renderhauer

Пользователь

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Renderhauer

Регистрация: 14.12.2013

Сообщения: 10585

Рейтинг: 11564

Pro100 Bot сказал(а):

Спасибо! Я пробовал получить хэдеры через запрос (получил {'Connection': 'close', 'Content-Length': '1105', 'Server': 'Varnish', 'Retry-After': '0', 'Accept-Ranges': 'bytes', 'Date': 'Tue, 29 Nov 2022 22:38:08 GMT', 'Via': '1.1 varnish', 'X-Served-By': 'cache-mrs10546-MRS', 'X-Cache': 'MISS', 'X-Cache-Hits': '0', 'X-Timer': 'S1669761488.218251,VS0,VE110'} ), а потом сделать запрос уже с ними. Код обрабатывался несколько минут и я остановил выполнение. Потом смотрю, ты апдейт сделал. Поставил {'user-agent': 'Mozilla/5.0'} и всё заработало. Ещё раз спасибо!

Так понимаю, мы просто шлём в хедере, что у нас движок Gecko, и dotabuff успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?

Нажмите, чтобы раскрыть...

в конкретно этом случае ему хватает тупо наличия хедера, он ничо там не проверяет HAhaa.png 

да, чет вроде защиты

кот выше написал, как на некоторых более изощренно проверяют

хотя и способ как на дотабаффе в общем-то работает как мы выяснили Okayg.png 

Pro100 Bot сказал(а):

Да, удобно. Как раз могу передать, хочу ли я по рейтинговым играм сортировать или ещё как. А альтернативно надо будет post-запрос делать, так понимаю.

Нажмите, чтобы раскрыть...

да

хотя на самом деле разница между ними больше условная, так-то и в гет можно боди передать hmmclueless.png 

Zacateca

Пользователь

Регистрация: 22.12.2017

Сообщения: 25669

Рейтинг: 9587

Нарушения: 70

Zacateca

Регистрация: 22.12.2017

Сообщения: 25669

Рейтинг: 9587

Нарушения: 70

YoshkinKot сказал(а):

страшная вещь кстати в том, что это не совсем curl

Нажмите, чтобы раскрыть...

А что это? 

NbW

Пользователь

Регистрация: 10.03.2016

Сообщения: 1430

Рейтинг: 364

NbW

Регистрация: 10.03.2016

Сообщения: 1430

Рейтинг: 364

Pro100 Bot сказал(а):

Так понимаю, мы просто шлём в хедере, что у нас движок Gecko, и dotabuff успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?

Нажмите, чтобы раскрыть...

user-agent самый примитивный способ решения проблемы, потому что он помогает в 80% случаев roflanLico.png?1616515069

жду некст тему, когда тебя забанят где-нибудь и мы все вместе изучим метод proxy в реквестсFeelsOkayMan.png?1592047748

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

Zacateca сказал(а):

А что это?

Нажмите, чтобы раскрыть...

это алиас для Invoke-WebRequest или какой-еще ерунды BabyYodaSip.gif?1660474244

Pro100 Bot

Пользователь

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

Pro100 Bot

Регистрация: 11.07.2015

Сообщения: 6798

Рейтинг: 1803

YoshkinKot сказал(а):

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

Нажмите, чтобы раскрыть...

Не поверишь, но я до этого прямо явственно не припомню этого. Вероятно, не обращал внимания. А вот только что мне друг скинул ссылку https://checko.ru/company/krka-rus-1025001813198 , и там 429!!! Просто я Pro100 Bot, вот и не пустило.

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

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 7042

Рейтинг: 2815

Pro100 Bot сказал(а):

Не поверишь, но я до этого прямо явственно не припомню этого. Вероятно, не обращал внимания. А вот только что мне друг скинул ссылку https://checko.ru/company/krka-rus-1025001813198 , и там 429!!! Просто я Pro100 Bot, вот и не пустило.

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

Нажмите, чтобы раскрыть...

для того чтобы понять что конкретный сайт не разрешает роботам, а также получить сайтмапу (без попытки имитации из себя человека), можно сходить на /robots.txt, ну например https://www.cloudflare.com/robots.txt

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