Мониторинг сайта для внутренних перенаправлений - PullRequest
0 голосов
/ 30 июня 2018

Я хотел бы отслеживать определенный URL и ждать, пока он внутренне перенаправит меня с помощью запросов Python. Сайт будет случайным образом перенаправлять меня через некоторое время. Однако у меня сейчас есть некоторые проблемы. Стратегия, которую я использовал до сих пор, выглядит примерно так:

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Upgrade-Insecure-Requests': '1',
    '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'
} 

session = requests.Session()

while success is False:
    r = session.get(url, headers=headers, allow_redirects=True)
    if keyword in r.text:
        success = True
    time.sleep(30)

print("Success.")

Кажется, что каждый раз, когда я делаю запрос GET, таймер сбрасывается, и поэтому меня никогда не перенаправляют, я думал, что сеанс исправит это, но, возможно, нет. Хотя, как я должен проверять наличие изменений на странице, не отправляя новый запрос каждые 30 секунд? Глядя на вкладку сети в Chrome, кажется, что код состояния 307.

Если кто-нибудь знает, как решить эту проблему, было бы очень полезно, спасибо.

1 Ответ

0 голосов
/ 30 июня 2018

Селен - быстрый и безобразный ответ:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36")

browser = webdriver.Firefox(profile)
browser.get(url)

while success is False:
    text = browser.page_source
    if keyword in text:
        success = True
    time.sleep(30)

print("Success.")

Что касается использования запросов, я рискну предположить, что ваш веб-браузер запрашивает перезагрузку, отличается ли запрос в сети от первоначального запроса? browsermob-proxy - это отличный инструмент для глубокого погружения в проблемы такого рода, фактически это вкладка сети по стероидам.

Извиняюсь за неопределенность последней половины, но трудно сказать больше, не увидев сайт.

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