Ошибка синтаксического анализа в консоли разработчика (также происходит при запуске на Chrome, но только при запуске через Pupppeteer) - PullRequest
0 голосов
/ 17 июня 2020

При попытке очистить результаты поиска по linkedin с помощью марионетки я заметил, что на странице результатов поиска отображается пустое поле. После расследования я заметил в консоли разработчика внутри Chromium, запущенного кукловодом эту ошибку:

Error while processing route: search.results.people Unexpected token % in JSON at position 0 SyntaxError: Unexpected token % in JSON at position 0
    at JSON.parse (<anonymous>)
    at u.s._deserializeQueryParam (https://static-exp1.licdn.com/sc/h/br/6n33815bd6sdo077qodh7watx:3028:140)
    ....
6n33815bd6sdo077qodh7watx:3028 Uncaught (in promise) SyntaxError: Unexpected token % in JSON at position 0
    at JSON.parse (<anonymous>)
    at u.s._deserializeQueryParam (6n33815bd6sdo077qodh7watx:3028)
    ....

Эта ошибка не возникает, если я запускаю Chrome вручную и загружаю тот же URL-адрес поиска.

Это мешает загрузке результатов поиска

Есть идеи?

К вашему сведению Видео, объясняющее это: https://www.youtube.com/watch?v=GYhrDWLJJ9o

Действия по воспроизведению

Расскажите нам о своей среде:

  • Версия Puppeteer: последняя (v4.0.0)
  • Версия платформы / ОС: Ubuntu 18.04 LTS
  • URL-адреса (если применимо): поиск по linkedin (здесь пример url ) - вам необходимо войти в свою учетную запись linkedin, чтобы установить файлы cookie
  • Node.js версия: v13.13.0. NPM версия 6.14.4

Какие шаги позволят воспроизвести проблему?

   const browser = await puppeteer.launch({
          "ignoreHTTPSErrors": true,
          "headless" : false,
          "args" :[
            '--ignore-certificate-errors',
            '--no-sandbox',
            '--disable-gpu',
            '--start-maximized',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            `--window-size=1200,800`,
            '--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36',
    ]});

    let page = await browser.newPage();
    await page.setViewport({"width": c["width"],"height": c["height"]});
    await page.setUserAgent(c["user_agent"]);    

    await page.goto(c["url"])

(где c ["url"] - ссылка выше )

Консоль разработчика на Chrome имеет этот вывод, который влияет на страницу от рендеринга чего-либо:

Error while processing route: search.results.people Unexpected token % in JSON at position 0 SyntaxError: Unexpected token % in JSON at position 0
    at JSON.parse (<anonymous>)
    at u.s._deserializeQueryParam (https://static-exp1.licdn.com/sc/h/br/6n33815bd6sdo077qodh7watx:3028:140)
    ....
6n33815bd6sdo077qodh7watx:3028 Uncaught (in promise) SyntaxError: Unexpected token % in JSON at position 0
    at JSON.parse (<anonymous>)
    at u.s._deserializeQueryParam (6n33815bd6sdo077qodh7watx:3028)
    ....

Я пробовал обновить хром до последней версии. Ничего.

Также пробовал chrome, установив исполняемый путь. Как ни странно, эта ошибка появляется только при прохождении кукловода, но не когда я вручную запускаю браузер и go по тому же URL-адресу.

Каков ожидаемый результат? Ожидаемый результат не соответствует ' не показывать вообще. Ожидаемая страница будет отображаться, если вы просто вручную откроете браузер и go по URL-адресу, как указано выше.

Что произойдет вместо этого?

Страница не показывает результатов поиска.

1 Ответ

1 голос
/ 17 июня 2020

Похоже, вам не нравится, как этот параметр экранирован.

https://www.linkedin.com/search/results/people/?facetGeoRegion=%5B%22us%3A296%22%5D&keywords=dwayne&origin=GLOBAL_SEARCH_HEADER

должно быть:

https://www.linkedin.com/search/results/people/?facetGeoRegion= [ "us: 296"] & keywords = dwayne & origin = GLOBAL_SEARCH_HEADER

...