作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在使用 Puppeteer 从页面中获取 cookie 和标题,但是它使用的是机器人预防系统,只有在单击页面时才会绕过;我不想保持这个顺序所以它是“可检测的”
如何让我的 Puppeteer 随机点击页面上的任意位置?不管它是否点击链接、按钮等。
我目前有这个代码
const getCookies = async (state) => {
try {
state.browser = await launch_browser(state);
state.context = await state.browser.createIncognitoBrowserContext();
state.page = await state.context.newPage();
await state.page.authenticate({
username: proxies.username(),
password: proxies.password(),
});
await state.page.setViewport(functions.get_viewport());
state.page.on('response', response => handle_response(response, state));
await state.page.goto('https://www.website.com', {
waitUntil: 'networkidle0',
});
await state.page.waitFor('.unlockLink a', {
timeout: 5000
});
await state.page.click('.unlockLink a');
await state.page.waitFor('input[id="nondevice"]', {
timeout: 5000
});
state.publicIpv4Address = await state.page.evaluate(() => {
return sessionStorage.getItem("publicIpv4Address");
});
state.csrfToken = await state.page.evaluate(() => {
return sessionStorage.getItem("csrf-token");
});
//I NEED TO CLICK HERE! CAN BE WHITESPACE, LINK, IMAGE
state.browser_cookies = await state.page.cookies();
state.browser.close();
for (const cookie of state.browser_cookies) {
if(cookie.name === "dtPC") {
state.dtpc = cookie.value;
}
await state.jar.setCookie(
`${cookie.name}=${cookie.value}`,
'https://www.website.com'
)
}
return state;
} catch(error) {
if(state.browser) {
state.browser.close();
}
throw new Error(error);
}
};
最佳答案
我能想到的从 DOM 中随机选择一个元素的最简单方法可能是使用 querySelectorAll()这将返回一个包含所有 <div>
的数组s 在您的文档中(或选择任何其他元素,如 <p>
或其他任何内容),然后您可以轻松使用 click()
从结果中随机选择一个,例如:
await page.evaluate(() => {
const allDivs = document.querySelectorAll('.left-sidebar-toggle');
const randomElement = allDivs[Math.floor(Math.random() * allDivs.length)];
randomElement.click();
});
关于node.js - 使用 Puppeteer 单击页面上的任意位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63094895/
我是一名优秀的程序员,十分优秀!