Капча использует запросы даже после смены заголовков и IP.Как меня отслеживают? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь почистить некоторые статьи с seekalpha.com.Однако после определенного количества царапин появляется капча.(то есть https://seekingalpha.com/article/4230872-dillards-still-room-downside)

Однако у меня возникают серьезные проблемы.

  1. Я использую from fake_useragent import UserAgent для рандомизации моего заголовка.

  2. Я использую случайное время ожидания между запросами

  3. Я меняю IP-адрес с помощью VPN при появлении капчи. Однако каким-то образом капча все еще появляется, когда появляется мой IP-адрес.

Это также странно, потому что, хотя в ответе на запрос появляется капча, капча не появляется в браузере.

Итак, я предполагаю, что по заголовкупросто неправильно.

Я отключил js и cookie при получении этого запроса, потому что с cookie и js, есть четкая информация, что веб-сайт отслеживает меня.

headers = {
    "authority": "seekingalpha.com",
    "method": "GET",
    "path": "/article/4230872-dillards-still-room-downside",
    "scheme": "https",
    "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',
    "upgrade-insecure-requests": "1",
    "user-agent": RANDOM
}

Это близко кчто использует веб-сайт: они добавляют

"cache-control": "max-age=0",
"if-none-match": 'W/"6f11a6f9219176fda72f3cf44b0a2059"',

Это мое исследование - etags, который используется для отслеживания и может использоваться для отслеживания людей. 'W/...' изменяет каждый запрос.

Также, когда я использую wkhtmltopdf , чтобы напечатать экран как pдф, у меня капча никогда не появляется.Я также пытался использовать селен, что еще хуже.Кроме того, я попытался использовать прокси, как показано здесь .

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

Редактировать: 1. Сеансы не работают

Кажется, что не работают случайные заголовки

Кажется, что не работают случайные сны

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

Селен не работает.

Я действительно не хочу платить за услугу по решению капч.

Я считаю, что проблема в том, что я недостаточно хорошо имитирую браузер.

КОД ПОСЛЕ ИСПОЛЬЗОВАНИЯ FIREFOX И СЕССИЙ:

headers = {
"Host": "seekingalpha.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://seekingalpha.com/article/4230534-top-investment-idea-2019-8_4-percent-yield-huge-upside-brookfield",
"Connection": "keep-alive",
"Cookie": "machine_cookie=7303078485198; __utma=150447540.1851983007.1546469337.1546469337.1546469337.1; __utmb=150447540.12.9.1546469900508; __utmc=150447540; __utmz=150447540.1546469337.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1; _igt=803cd9bc-cab1-4ebf-acf2-0f3e24cd4ab6; _pxvid=97da9aa0-0ee0-11e9-8dfa-3d4fb4091b16; _pxde=9ac7f544ed6bf87b3b17eab28485c874a9ec30af08c58bd06939e970333f9fb0:eyJ0aW1lc3RhbXAiOjE1NDY0Njk5MjMxNTl9; _fbp=fb.1.1546469337674.750013017; _px=jmSp9VoiTt+K7GfprDo2E0ESrv6B6oWW6aBWS80oMIv/ybegmmYZiH6d37Ko4xx1q8kzxUMBhDcjcagHc0sJ7g==:1000:caXByzVxpWn0yCp7pm7F4ZoS6opLJ4PpLAUY6hxyXg2qiKEisAvTpQ8McX4G5ki3KhR0mYSxP2lPzmBmsAHfT/tUDNQf6etMaeTHNeaI7/Bo57IdaZ0t8EVaoGN6JdT/37SKKCoj+wWhxwZT76R4GorL6HmG9zJoeNg4aq8AFpSaGRby+Y0oNFf+RGGNpyvPK/a7XFLpX2Wqil7C8NPGCMTMn9OP34oh7pQkIjNQADJh0LK+VooK4L8xeeEigO45tZfIZDoyo60T8yrZCeeVww==; _px2=eyJ1IjoiZTY3MzU3YTAtMGVlMS0xMWU5LWEwMTgtYTEzNmYxODA1MTRlIiwidiI6Ijk3ZGE5YWEwLTBlZTAtMTFlOS04ZGZhLTNkNGZiNDA5MWIxNiIsInQiOjE1NDY0NzA0MjMxNTksImgiOiJkN2ZmYmU1NDFiMTc2MmZiODE0NzMwMmRlNjVlMmU5OTcxMmE0YWNiOTkzODNkZTk3M2Q5Y2MxMTlhYjgzZTRiIn0=; h_px=1; __gads=ID=ec9252ba55729c81:T=1546469341:S=ALNI_MYXXw_CSX4n0nB6LlTDxgom1eFNMA; hsfirstvisit=; __hstc=234155329.06decc4a37bd788535f37984c1b06431.1546469363604.1546469363604.1546469363604.1; hubspotutk=06decc4a37bd788535f37984c1b06431; __hssrc=1; __hssc=234155329.5.1546469363604; cto_lwid=9fc606f8-a6da-4881-889a-2eee84855834; _pxff_tm=1; OX_plg=swf|shk|pm; _ig=d545d9b6-0d2b-4c3b-c8a0-4f63e21e7289; dmxRegion=false; _sasource=article_bottom_lift",
"Upgrade-Insecure-Requests": "1",
"TE": "Trailers"
}
def main():
    ua = UserAgent()
    count = 0
    file_writer("Run\n")
    collection_tracker("Run\n")
    session = requests.session()
    for link in links():
        headers["User-Agent"] = str(ua.random)
        r = session.get(link, headers = headers)
        soup = BeautifulSoup(r.content, "html5lib")
        print(soup)
        sleep(randint(1000,3000)/1000)
        file_writer(Header(soup).output()[0])
        collection_tracker(link +"\n")


        if count > 200:
            break
        count += 1

1 Ответ

0 голосов
/ 02 января 2019

Нелегко точно определить точную причину блокировки и столкновения с капчей. Вот несколько мыслей:

VPN и прокси

Иногда служба Captcha (в данном случае Google) может помещать в черный список общие IP-адреса VPN и рассматривать их как потенциальные угрозы, поскольку многие люди используют их и генерируют много трафика.

Иногда прокси-серверы (особенно бесплатные) не являются анонимными и могут отправлять ваш фактический IP-адрес в заголовках запросов (в частности, X-Forwarded-For header)

Заголовки запроса

Есть определенных заголовков, которые важно иметь в вашем запросе. Самый простой способ сделать ваши запросы законными - использовать вкладку «Сеть» в «Инструментах разработчика» вашего браузера и скопировать все заголовки, которые отправляет ваш браузер.

важный заголовок , который должен иметь referer. Хотя он может или не может быть проверен веб-сайтом, безопаснее всего иметь его там с URL одной из страниц веб-сайта (или домашней страницы):

referer: https://seekingalpha.com/

Тайм-ауты и сеансы

Попробуйте увеличить время ожидания между вашими запросами. Несколько секунд должно быть разумным.

Наконец, попробуйте использовать session объекты in requests. Они автоматически поддерживают файлы cookie и обновляют referer для нескольких запросов, чтобы эмулировать реального пользователя, просматривающего веб-сайт. Я нашел их наиболее полезными, когда дело доходит до преодоления соскоб защиты.

* * Защитный код тысяча сорок-девять

В крайнем случае используйте сервис для снятия капчи . Есть много услуг (в основном платных) онлайн, которые делают это. Популярным является DeathByCaptcha. Имейте в виду, что вы можете нарушать условия использования сайта, которые я не рекомендую:)

...