import requests
def extractlink():
with open('extractlink.txt', 'r') as g:
print("opened extractlink.txt for reading")
contents = g.read()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
r = requests.get(contents, headers=headers)
print(("Links to " + r.url))
time.sleep (2)
В настоящее время r.url просто ссылается на URL-адрес из файла extractlink.txt.
Я хочу исправить этот скрипт, чтобы найти окончательный перенаправленный URL-адрес и распечатать результат. Похоже, что проблема кроется где-то в запросе URL-адреса, несмотря на попытку многих альтернатив и шагов по устранению неполадок, моя проблема, похоже, не решена, как остальные.
При отладке r.history
читается как []
, а r.status_code
читается как 403
, даже если ссылка перенаправляется как 302 в браузере.
Любые идеи?
(extractlink.txt - это всего лишь однострочный файл со ссылкой на http://butterup.teechip.icu/
, вводите с осторожностью, сайт спама)
Куда следует включить r.history
? Я полагаю, вы имеете в виду просто печать для отладки? Спасибо @Cole
печать (r.history)
r.history
читается как []
r.status_code
также читается как 403, URL-адрес должен иметь редирект 302.
Привет, я новичок в stackoverflow, есть ли причина, по которой мои сообщения продолжают получать отрицательные голоса? Я изо всех сил старался предоставить достоверную информацию / цели и весь необходимый код.
@Dansey Забудьте о голосах против, они анонимны и должны быть анонимными. Мотивация проголосовать за / против может быть субъективной, поэтому не стоит придавать ей особого значения. Если вы считаете, что это лучший вопрос, который вы можете задать, тогда все в порядке, но затем улучшите свой вопрос. Прочтите руководство Как спросить и пройдите тур, если вы еще этого не сделали.
@Dansey Если вам нужна помощь в SO, вы должны предоставить минимальный воспроизводимый пример.
@eyllanesc Я не знаю, что еще вам нужно, я предоставил все, кроме ссылки (которая перенаправляет на спам / вредоносный сайт); Я не буду уделять больше внимания таким URL-адресам. Как я уже сказал, на выходе получается действительный URL-адрес, который работает в браузере согласно print (r.history): его легко можно воссоздать.
@Dansey Ну, тогда он предоставляет другие URL-адреса, которые не являются вредоносными :-). Часто в этих случаях нет универсального ответа, поскольку они зависят от конкретного URL-адреса, поэтому я рекомендую вам предоставить URL-адреса, предупреждающие об опасности, но, вероятно, не получите помощи.
@Dansey, например, перенаправление может быть выполнено с помощью js, и, следовательно, библиотека запросов не будет работать, вы должны использовать селен, если это так. это обычно происходит в ссылках, которые через n секунд перенаправляют вас
r.url
- это последний URL-адрес перенаправления! r.history
пустой список означает, что вы не были перенаправлены. Если вы успешно получаете доступ в браузере, проблема, почему вы не были перенаправлены, заключается в том, что вы отправляете неверный запрос, и сервер ответил 403 вместо 302.
Итак, я предлагаю добавить свой пример URL-адреса. Или вы сами пытаетесь понять, чего не хватает в вашем запросе. Кстати, есть много причин, по которым вы получаете неожиданный ответ (облачная вспышка и т. д.). Если вы не предоставите пример URL-адреса, я могу дать только ваше предложение вместо ответа.
Нет проблем, @kcorlidy. Вот URL, вводите с осторожностью. http://butterup.teechip.icu/
Я тестировал ваш код и URL-адрес, и URL-адрес ответил 302. И я был перенаправлен на http://newtshirtshop.com/buckle-up-butter-up
.
Я заметил ваш код: contents = g.read()
. Можете ли вы распечатать его и посмотреть, является ли это законным URL-адресом http. Кстати, когда вы открыли http://butterup.teechip.icu/
и получили 403?
Да, для меня скрипт возвращает 403.
Как ни странно, печать g.read () оказалась пустой! Есть идеи, почему? @kcorlidy
Простите за грубое предложение. Можете ли вы попытаться получить доступ к URL-адресу через жесткий код вместо чтения файла (интересно, произошла ли ошибка при запросах или при чтении файла). Если это произошло при чтении файла, прочтите stackoverflow.com/questions/16374425/…
@kcorlidy, я изучил проблему и уже наткнулся на эту ссылку, я добавил код в свой скрипт, но чтение все еще остается пустым.
@kcorlidy Жесткое кодирование URL-адреса по-прежнему приводит к тому, что конечный URL-адрес остается прежним.
Есть какое-нибудь решение?
Код состояния HTTP 403 означает, что вы не авторизованы для просмотра конечной точки. Это означает, что либо вам нужно войти в систему, либо вам могут не хватать заголовков. Вы можете проверить заголовки, используемые браузером, на вкладке сети элемента насекомого. Попробуйте использовать тот же заголовок, что и в браузере.
requests.get
по умолчанию должен следовать перенаправлениям. Можешь включитьr.history
?