Ошибка 429 при синтаксическом анализе (parsing) dotabuff.
134
26
Всем \o
Пытаюсь провести синтаксический анализ страницы со статистикой по героям (достать проценты побед, количество игр, дату последней игры на герое), но при запросе dotabuff выдаёт ошибку 429 "Слишком много запросов", хотя я просто один раз запрашиваю, я не ползаю по всем страницам. попробовал подождать с полчаса-час - та же ошибка.
Похоже, что dotabuff видит, что запрос исходит не от человека, и тупо его блочит. Слышал, что когда нужно искать большое количество информации, людям приходится использовать безголовые браузеры типа Selenium и использовать их совместно с VPN, которые специально предназначены для них. Неужели так всё запущено?
Наверняка кто-то уже сталкивался с такой проблемой вообще и на dotabuff в частности. Как обойти защиту dotabuff? Писать в службу поддержки?
Tor4illa сказал(а):↑Ты в лоб парсишь (без api)? У тебя html код на выходе?
Я, когда мне нужно спарсить сайт, открывал документацию по его api + гуглил примеры
Нажмите, чтобы раскрыть...А вот, кстати, у dotabuff есть API? Я просто не нашёл у них. Это в поддержке об этом спросить можно?
На выходе html код, да. Потом его в BeautifulSoup (на python если важно) и вижу, что там 429 ошибка.
Pro100 Bot сказал(а):↑А вот, кстати, у dotabuff есть API? Я просто не нашёл у них. Это в поддержке об этом спросить можно?
На выходе html код, да. Потом его в BeautifulSoup (на python если важно) и вижу, что там 429 ошибка.
Нажмите, чтобы раскрыть...Понятия не имею, но можешь загуглить (dotabuff api).
Дав принципе не важно через что ты обрабатываешь html. Я попробую через свою прогу сделать запрос страницы, скинешь ссылку?
Tor4illa сказал(а):↑Понятия не имею, но можешь загуглить (dotabuff api).
Дав принципе не важно через что ты обрабатываешь html. Я попробую через свою прогу сделать запрос страницы, скинешь ссылку?
Нажмите, чтобы раскрыть...https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking
В принципе, я потом, возможно, сделаю, чтобы по разным id игроков прога лазила, но пока даже с одной страницей не выходит. И после знака вопроса тоже необязательный параметр (если пользователь введёт, что хочет по рейтинговым анализ, то будет как указал ссылка, если по всем играм, то всё, что до ?). Я делал запрос только по ссылке, которую указал выше.
Заранее спасибо^^
Pro100 Bot сказал(а):↑https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking
В принципе, я потом, возможно, сделаю, чтобы по разным id игроков прога лазила, но пока даже с одной страницей не выходит. И после знака вопроса тоже необязательный параметр (если пользователь введёт, что хочет по рейтинговым анализ, то будет как указал ссылка, если по всем играм, то всё, что до ?). Я делал запрос только по ссылке, которую указал выше.
Заранее спасибо^^
Нажмите, чтобы раскрыть...Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так
Tor4illa сказал(а):↑Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так
Нажмите, чтобы раскрыть...Renderhauer сказал(а):↑хз чел оно тупо курлом работает
Спойлерзапрашиваешь как-то криво, хз
Нажмите, чтобы раскрыть...Спасибо за помощь!
Но, видимо, не совсем во мне проблема, а в провайдере, потому что:
Д2ру открывает, а дотабафф нет.
Pro100 Bot сказал(а):↑Спасибо за помощь!
Но, видимо, не совсем во мне проблема, а в провайдере, потому что:
Д2ру открывает, а дотабафф нет.Нажмите, чтобы раскрыть...Win+R
powershell
curl https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking
скрин сюда
DrZoidberg сказал(а):↑Нажмите, чтобы раскрыть...Спасибо за ссылку! Кстати, она у меня тоже в обычном браузере не открывалась. Только в торе открылась)
Renderhauer сказал(а):↑Win+R
powershell
curl https://www.dotabuff.com/players/424670805/heroes?lobby_type=ranked_matchmaking
скрин сюда
Нажмите, чтобы раскрыть...СпойлерПоменял провайдера - ничего не поменялось. У меня проблема с настройками на компьютере, например, брандмауэр не пускает или что это?
Pro100 Bot сказал(а):↑Поменял провайдера - ничего не поменялось. У меня проблема с настройками на компьютере, например, брандмауэр не пускает или что это?
Нажмите, чтобы раскрыть...понятия не имею
но давай на всякий случай в нем же tracert на тот же урл
Pro100 Bot сказал(а):↑СпойлерНажмите, чтобы раскрыть...чет какая-то жижа, или у нас немного разные версии павершелов и у тебя надо с какими-нибудь флагами ставить, хз
лан, не суть
я щас попробовал с приложки для типа дудоса () реквестик пульнуть тупо на урл, у меня тож заругался
ща чуть подумаю, не уходи далеко
короче когда кидаешь реквест - кидай с хедерами
у меня с этими за пять секунд он сожрал сто реквестов и не подавился, ему вообще было ни разу не too many requests
Спойлер
ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 ACCEPT-LANGUAGE ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 HOST www.dotabuff.com REFERER https://www.google.com/ USER-AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 SEC-CH-PREFERS-COLOR-SCHEME dark SEC-CH-UA "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
UPD: достаточно одного только USER-AGENT, значение вообще любое
Pro100 Bot сказал(а):↑И после знака вопроса тоже необязательный параметр (если пользователь введёт, что хочет по рейтинговым анализ, то будет как указал ссылка, если по всем играм, то всё, что до ?).
Нажмите, чтобы раскрыть...це называется query, способ передавать параметры прям в урле, чтобы не засовывать текст в бади в виде текста, джейсона или упаси господи какого-нибудь соапа
перед началом квери ставится ?, потом параметры=значения, разделенные &
типа даем это
получаем это
Ramdesu сказал(а):↑1. у тебя все ок с DNS? (попробуй гугловский 8.8.8.8 днс вбить в настройках)
2. попробуй взять урл в кавычки (curl "blabla")Нажмите, чтобы раскрыть...1. Попробовал - не помогло
2. Один раз powershell как-то странно себя повёл. Потом стал переделывать, пришлось перезапускать его - не помогло.
Но всё равно спасибо!
Renderhauer сказал(а):↑короче когда кидаешь реквест - кидай с хедерами
у меня с этими за пять секунд он сожрал сто реквестов и не подавился, ему вообще было ни разу не too many requests
Спойлер
ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 ACCEPT-LANGUAGE ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 HOST www.dotabuff.com REFERER https://www.google.com/ USER-AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 SEC-CH-PREFERS-COLOR-SCHEME dark SEC-CH-UA "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
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, способ передавать параметры прям в урле, чтобы не засовывать текст в бади в виде текста, джейсона или упаси господи какого-нибудь соапа
перед началом квери ставится ?, потом параметры=значения, разделенные &
типа даем это
получаем это
Нажмите, чтобы раскрыть...Да, удобно. Как раз могу передать, хочу ли я по рейтинговым играм сортировать или ещё как. А альтернативно надо будет post-запрос делать, так понимаю.
Tor4illa сказал(а):↑Я считал html-страницу (через прогу написанную в qt). Никаких ошибок нет. Вероятно ты что-то делаешь не так
Нажмите, чтобы раскрыть...А вот если не секрет, твоя программа как-то мимикрировала под работу браузера? Те же хедеры, может, использовал?
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
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 успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?
Нажмите, чтобы раскрыть...в конкретно этом случае ему хватает тупо наличия хедера, он ничо там не проверяет
да, чет вроде защиты
кот выше написал, как на некоторых более изощренно проверяют
хотя и способ как на дотабаффе в общем-то работает как мы выяснили
Pro100 Bot сказал(а):↑Да, удобно. Как раз могу передать, хочу ли я по рейтинговым играм сортировать или ещё как. А альтернативно надо будет post-запрос делать, так понимаю.
Нажмите, чтобы раскрыть...да
хотя на самом деле разница между ними больше условная, так-то и в гет можно боди передать
Pro100 Bot сказал(а):↑Так понимаю, мы просто шлём в хедере, что у нас движок Gecko, и dotabuff успокаивается, думая, что это человек с браузера? Такая защита против дурака? Интересно, на остальных сайтах может потребоваться более изощрённый подход?
Нажмите, чтобы раскрыть...user-agent самый примитивный способ решения проблемы, потому что он помогает в 80% случаев
жду некст тему, когда тебя забанят где-нибудь и мы все вместе изучим метод proxy в реквестс
YoshkinKot сказал(а):↑гугл например даже обычного человека может подозревать в том, что он бот, думаю периодически встречал
Нажмите, чтобы раскрыть...Не поверишь, но я до этого прямо явственно не припомню этого. Вероятно, не обращал внимания. А вот только что мне друг скинул ссылку https://checko.ru/company/krka-rus-1025001813198 , и там 429!!! Просто я Pro100 Bot, вот и не пустило.
А понять, при выполнении какого условия тебя пропустит, можно только перебрав разные методы обхода?
Pro100 Bot сказал(а):↑Не поверишь, но я до этого прямо явственно не припомню этого. Вероятно, не обращал внимания. А вот только что мне друг скинул ссылку https://checko.ru/company/krka-rus-1025001813198 , и там 429!!! Просто я Pro100 Bot, вот и не пустило.
А понять, при выполнении какого условия тебя пропустит, можно только перебрав разные методы обхода?
Нажмите, чтобы раскрыть...для того чтобы понять что конкретный сайт не разрешает роботам, а также получить сайтмапу (без попытки имитации из себя человека), можно сходить на /robots.txt, ну например https://www.cloudflare.com/robots.txt
а если уж ты хочешь пойти туда куда тебе не разрешают, надо показывать всем видом, что ты человек, а там много подходов что со стороны защиты, что со стороны атаки
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:22
Просмотров:27
-
Сообщений:18
Просмотров:22
-
Сообщений:3
Просмотров:3
-
kukarekinoa 18 Apr 2024 в 05:32Сообщений: 11 18 Apr 2024 в 05:32
Сообщений:11
Просмотров:16
-
Сообщений: 40 18 Apr 2024 в 04:52
Сообщений:40
Просмотров:43