首页 > 解决方案 > 我如何使用 puppeteer 在耐克网站上进行授权?

问题描述

我欢迎大家!我决定编写一个脚本,只需登录帐户并检查帐户上的电话号码。登录时出现问题。我无法登录,使用此代码出现以下错误:

const puppeteer = require('puppeteer')

async function nike_login() {
  const browser = await puppeteer.launch({
    devtools: true,
    args: ['--Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'],
    defaultViewport: null,
    headless: false,
    slowMo: 50
  });

  const page = await browser.newPage();

  const url = 'https://www.nike.com/ru/launch';

  await page.goto(url);
}

nike_login();

错误:通用“0 - 对https://unite.nike.com/login的POST 请求被阻止”[第一个错误没有 '--disable-web-security'][1] 但带有此标志:

'--disable-web-security'

我有下一个错误[带有此标志][2] [1]:https://i.stack.imgur.com/sw43t.png [2]:https://i.stack.imgur.com/H1cix.png

我如何授权?我尝试了很多东西,但由于缺乏知识,我可能错过了一些东西,请帮忙!

标签: javascriptnode.jspuppeteer

解决方案


启动浏览器看似很简单,但默认puppeteer.launch 其实用处不大。所以我建议你用另一种方式启动浏览器,如下所示:

  1. 首先,安装一些包:
   "puppeteer": "^2.0.0",
   "puppeteer-core": "^2.0.0",
   "puppeteer-extra": "^2.1.3",
   "puppeteer-extra-plugin": "^3.0.4",
   "puppeteer-extra-plugin-anonymize-ua": "^2.1.4",
   "puppeteer-extra-plugin-stealth": "^2.2.2",
  1. 示例代码:
const puppeteer = require("puppeteer-extra");
const pluginStealth = require("puppeteer-extra-plugin-stealth");
puppeteer.use(pluginStealth());

async function nike_login() {
  const browser = await puppeteer.launch({headless: 0});
  const page = await browser.newPage();
  const url = 'https://www.nike.com/ru/launch';
  try {
    await page.goto(url, {timeout: 4000});
  } catch (err) {
    console.log('ignore this one because browser will loads many things that u do not need');
  }
//  continue your code
}

nike_login();

推荐阅读