javascript 剧作家配置模仿我原来的浏览器行动

q9yhzks0  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(83)

我试图写一个简单的机器人使用Playwright的浏览器游戏。游戏有一个重复的动作(按钮点击),我想避免。我的想法是能够在我原来的浏览器上玩游戏,并使用Playwright来执行重复的动作。我想实现的是配置Playwright,以便所有操作都从我的浏览器执行。
我正在将UserAgent设置为我的用户代理。我没有设置代理,所以所有的请求都来自我的IP地址。我将webdriver的值设置为undefined(也许我应该设置为false?))
这是我用来打开浏览器的代码:

const browserDetails = await chromium.launch({
      headless: false,
    });
    setBrowser(browserDetails);

    const contextDetails = await browser.newContext({
      userAgent: myUserAgent,
    });
    setContext(contextDetails);

    await context.addInitScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})");

    const pageDetails = await context.newPage();
    setPage(pageDetails);
    await page.goto(loginUrl);

    await page.waitForSelector('input[name="name"]', 'input[name="password"]', 'button[type="submit"]');
    await page.waitForTimeout(randomWaitTimeSeconds1_2());
    await page.type('input[name="name"]', username, { delay: 50 });
    await page.type('input[name="password"]', password, { delay: 50 });
    await page.waitForTimeout(randomWaitTimeSeconds1_2());
    await page.click('button[type="submit"]');

这是我用来点击按钮的代码:

await page.waitForTimeout(randomWaitTimeSeconds1_2());
  const btnNav = 'span.name:has-text("text")';
  await page.waitForSelector(btnNav);
  const span = await page.$(btnNav);

  logger.info(`going to the page`);
  await page.click(span);

  logger.info(`looking for a start button`);
  await page.waitForTimeout(randomWaitTimeSeconds1_2());
  const startBtnSelector = 'button.start';
  await page.waitForSelector(startBtnSelector)
  const startBtn = await page.$(startBtnSelector);

  await page.click(startBtn);

  // then it will click a button to go to "neutral" page
  // wait for 10-15minutes with page.waitForTimeout()
  // after that will check if user is logged in (according to the navigators)
  // will log in if required
  // click required buttons again
  // action repeated again

  // there will be a function which from time to time will close browser and excecute 
  // login and proceed with button clicking

当前配置是否足以隐藏我正在使用Playwright,是否足以设置userAgent值以模仿我正在使用Chrome而不是Playwright?我不完全确定反机器人检测是如何工作的(我知道我应该模仿人类的行为,但除此之外……)

vcirk6k6

vcirk6k61#

通过多次尝试相同的IP可能是反机器人系统检测非人类行为的原因。尝试旋转您的IP。
关于用户代理,只要你使用一个真实的的,你是好的。Here you can find real user agents to use in your Playwright
在阅读了Playwright文档之后,我发现了一些原因,为什么你的用户代理可能没有在Playwright的所有上下文和页面中使用。
1.将用户代理应用于playwright/test

import { test } from '@playwright/test';

test.use({ userAgent: myUserAgent });

1.创建新页面时使用user_agent:

const pageDetails = await context.newPage(user_agent=myUserAgent);

让我知道这些建议是否对你有帮助,祝你好运:)

相关问题