1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 550+ и мы растем!
    Скрыть объявление

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

Тема в разделе "1.2.570", создана пользователем siventes, 6 май 2019.

  1. siventes

    siventes A-Parser Pro License
    A-Parser Pro

    Регистрация:
    4 май 2019
    Сообщения:
    13
    Симпатии:
    0
    Версия 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
              }
            ];
    
     
    #1 siventes, 6 май 2019
    Последнее редактирование модератором: 7 май 2019
  2. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.657
    Симпатии:
    1.618
    Значение заголовка Accept-Language не зависит от языка интерфейса Гугла (Interface language), ниже скриншоты:
    [​IMG]
    [​IMG]

    Используемые в парсере заголовки подобраны таким образом, чтобы минимизировать количество банов и при этом сохранить правильность результатов.
     
  3. siventes

    siventes A-Parser Pro License
    A-Parser Pro

    Регистрация:
    4 май 2019
    Сообщения:
    13
    Симпатии:
    0
    Если я правильно понимаю вывод дебага в разделе "Parser Test", то парсер не шлет по умолчанию вообще заголовок Accept-Language, а так же стандартные заголовки, соответствующие используемому юзер агенту. Если такое поведение приводит к уменьшению банов, то я несколько удивлен, может, это некая "бага" на стороне Гугла.
    Я прочитал несколько раз ответ и так и не понял его посыл. В моем посте речь шла в первую очередь о:
    1) приведение заголовков в "стандартный" вид
    2) запрос был в первую очередь связан с разной рекламной выдачей ( Адсенс) в зависимости от заголовков браузера.
     
  4. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.657
    Симпатии:
    1.618
    В 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 просьба сообщить, насколько улучшился парсинг при использовании указанных выше заголовков

    Кроме этого, обновлены используемые юзерагенты и исправлен парсинг мобильной верстки.
     
    Metroid и relay нравится это.

Поделиться этой страницей