我试图写一个简单的机器人使用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?我不完全确定反机器人检测是如何工作的(我知道我应该模仿人类的行为,但除此之外……)
1条答案
按热度按时间vcirk6k61#
通过多次尝试相同的IP可能是反机器人系统检测非人类行为的原因。尝试旋转您的IP。
关于用户代理,只要你使用一个真实的的,你是好的。Here you can find real user agents to use in your Playwright
在阅读了Playwright文档之后,我发现了一些原因,为什么你的用户代理可能没有在Playwright的所有上下文和页面中使用。
1.将用户代理应用于playwright/test
1.创建新页面时使用user_agent:
让我知道这些建议是否对你有帮助,祝你好运:)