5
headers["user-agent"] = fakeUa();
  console.log(fakeUa())
  let firstReq = true;
    page.route('**/*', route => {
    const request = route.request()
    //console.log(request.url(), JSON.stringify(request.headers()));
    
    if("x-j3popqvx-a" in request.headers()){
        headers = request.headers();
        //console.log(headers);
        console.log("exiting");
        return;
    }
    else {
        console.log("in");
        return route.continue({headers: headers});
    }
  });
  let pageRes = await page.goto(url, {waitUntil: 'load', timeout: 0});

我想在向 url 发送请求时添加假用户代理。但它不会添加假用户代理,而是使用默认用户代理。

4

1 回答 1

5

虽然在puppeteer中可以使用该page.setUserAgent()方法应用自定义 UA 并page.setExtraHTTPHeaders()设置任何自定义标头,但在playwright中,您可以将自定义用户代理 ( userAgent) 和标头 ( extraHTTPHeaders) 设置为以下选项browser.newPage()browser.newContext()类似选项:

const page = await browser.newPage({ userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' })
const page = await browser.newPage({ extraHTTPHeaders: 'Cache-Control': 'no-cache' })

编辑:如果您使用它的newContext()用法如下所示(确保在设置userAgent中设置newContext而不是在newPage!):

const context = await browser.newContext({ userAgent: 'hello' })
const page = await context.newPage()
// to check the UA:
console.log(await page.evaluate(() => navigator.userAgent))
于 2020-06-27T08:03:56.120 回答