Улучшение [1.2.564] SE::Google::Modern не шлет заголовки Accept-Language, Upgrade-Insecure-Requests, Accept

  • Автор темы Автор темы siventes
  • Дата начала Дата начала

siventes

A-Parser Pro License
A-Parser Pro
Версия v1.2.480
Основная причина запроса - разная рекламная выдача в зависимости от заголовка "Accept-Language".

Предлагаю сделать умолчание для "Accept-Language". При изменении настройки парсера "Interface language", менять его на нужный, сделать возможность изменять вручную заголовок "Accept-Language"(чтобы можно было указывать более одного языка - "Accept-Language": "en-US,en;q=0.9,ru;q=0.8").
Также предлагаю изменить заголовки в сответствии с реальным браузером:
Код:
"headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "en-US,en;q=0.9",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
Код:
$VAR1 = [
          'GET',
          'https://www.google.com/search?q=buy%20car&ie=utf-8&oe=utf-8&num=10&hl=en',
          {
            'do_gzip' => 1,
            'headers' => {
                         'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
                         'connection' => 'close',
                         'accept-encoding' => 'gzip, deflate',
                         'referer' => 'https://www.google.com/'
                       },
            'attempt' => 4,
            'decode' => 'auto-html',
            'redirect_filter' => sub { "DUMMY" },
            'timeout' => '60',
            'http2' => 0,
            'max_size' => 524288
          }
        ];
 
Последнее редактирование модератором:
При изменении настройки парсера "Interface language", менять его на нужный,
Значение заголовка Accept-Language не зависит от языка интерфейса Гугла (Interface language), ниже скриншоты:
ysn4s_190507102226.png
tjlb6_190507102528.png

Также предлагаю изменить заголовки в сответствии с реальным браузером:
Используемые в парсере заголовки подобраны таким образом, чтобы минимизировать количество банов и при этом сохранить правильность результатов.
 
Если я правильно понимаю вывод дебага в разделе "Parser Test", то парсер не шлет по умолчанию вообще заголовок Accept-Language, а так же стандартные заголовки, соответствующие используемому юзер агенту. Если такое поведение приводит к уменьшению банов, то я несколько удивлен, может, это некая "бага" на стороне Гугла.
Я прочитал несколько раз ответ и так и не понял его посыл. В моем посте речь шла в первую очередь о:
1) приведение заголовков в "стандартный" вид
2) запрос был в первую очередь связан с разной рекламной выдачей ( Адсенс) в зависимости от заголовков браузера.
 
В SE::Google::Modern SE::Google::Modern добавлен параметр Additional headers, который позволяет указывать любые собственные заголовки. Они будут использоваться для запросов, но в приоритете всегда те заголовки, которые прописаны в парсере и необходимы для получения корректного ответа.
Например, если указать собственный user-agent, то он будет проигнорирован, т.к. будет использован user-agent, определенный параметром Device.

Этот параметр позволяет задавать отсутствующие заголовки, о которых идет речь в сообщениях выше. Формат аналогичен такому же параметру в Net::HTTP Net::HTTP, пример:
Код:
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
accept-encoding: gzip, deflate
accept-language: en-US,en;q=0.9,ru;q=0.8
upgrade-insecure-requests: 1

Внимание! Использование дополнительных заголовков может повлиять на получаемый ответ и парсер может работать некорректно.

@siventes просьба сообщить, насколько улучшился парсинг при использовании указанных выше заголовков

Кроме этого, обновлены используемые юзерагенты и исправлен парсинг мобильной верстки.
 
Назад
Верх