В чем разница между запросом браузера и запросом curl? - PullRequest
2 голосов
/ 29 мая 2020

https://psycnet.apa.org/record/2016-47119-002

Когда я получаю доступ к указанному выше URL-адресу с помощью chrome (в частном окне), я вижу первый запрос, который соответствует следующей команде curl . Но когда я вызываю эту команду curl в командной строке, она будет обнаружена distil network с отображением <div id="distilIdentificationBlock">&nbsp;</div> .

Мне это кажется странным, поскольку это первый запрос. Если нет разницы между запросами, отправленными curl и chrome, нет способа, которым дистиллированная сеть может определить, какой запрос отправляется ботом или настоящим браузером. Кто-нибудь знает, в чем разница между запросом curl и запросом chrome?

curl 'https://psycnet.apa.org/record/2016-47119-002' \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -H 'Cache-Control: no-cache' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'Sec-Fetch-Site: none' \
  -H 'Sec-Fetch-Mode: navigate' \
  -H 'Sec-Fetch-User: ?1' \
  -H 'Sec-Fetch-Dest: document' \
  -H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \
  --compressed

PS Проблема такая же, если я использую firefox для извлечения соответствующей команды curl. Таким образом, разница между запросом firefox и запросом curl также имеет значение.

1 Ответ

1 голос
/ 29 мая 2020

Нет никакой разницы.

Чтобы узнать, как работает Distill (их система защиты от веб-сканирования), вам нужно посмотреть на первоначальный ответ HTML:

Когда я делаю запрос в Chrome и посмотрите на начальный ответ в инструментах разработчика (убедитесь, что установлен флажок «Сохранить журнал»). Я вижу, что ответ на самом деле представляет собой короткую веб-страницу, содержащую встроенный <script>, который выполняет некоторые простые действия. является ли этот агент пользователя веб-браузером? " проверки, такие как запуск сценариев, которые ищут JavaScript объекты DOM, которые не будут существовать вне веб-браузера (при условии, что пользовательский агент HTTP вообще может запускать сценарии, а cURL и wget не , между прочим).

Если скрипт считает, что ваш пользовательский агент является веб-браузером, он выполняет другой запрос реального контента, используя динамически сгенерированный пароль (я не рассматривал детали для как работает , что ) - вот почему вы не можете повторно запросить реальный контент, используя cURL или wget, поскольку пароль уникален для каждого запроса.

Вот скриншот элемента <script> в ответе начальной страницы и обратите внимание на отсутствие реального фактического содержимого в HTML.

enter image description here

Если вы отключите JavaScript в своем браузере, вы вообще не сможете получить доступ к этой веб-странице.

Этот вид антискребковой системы защищает веб-страницы от запросов от пользовательских агентов, у которых отсутствуют средства для оцените JavaScript - так будет блок k curl, wget, HttpClient и fetch / XMLHttpRequests в браузере (по крайней мере, без дополнительной работы).

Можно подумать, что эта система будет отображать сайт un -индексируются пауками поисковых систем - но это старое (и укоренившееся) убеждение и практика: до конца 2000-х годов только основные пауки поисковых систем (Google, Bing / Windows Live Search, Yahoo и др. c) проиндексировал необработанный HTML и не запускал JavaScript - но с тех пор пауки поисковых систем начали запускать JavaScript и даже начали индексировать сайты не с использованием специально созданных механизмов spider HTML -парсера, а с использованием реального веб-браузера движки (Google действительно запустил это, чтобы они могли индексировать веб-сайты с большим количеством скриптов, особенно одностраничные приложения, используя Angular, Vue, et c). Когда я работал в Microsoft, мне приходилось использовать систему искателя Bing для некоторых исследовательских проектов, и в ней использовалась специальная сборка Inte rnet Explorer для «запуска» посещаемых веб-страниц.

...