我正在使用 puppeteer 执行一些操作并拍摄屏幕截图。整个过程有多重身份验证,首先是 Gmail 登录,然后 SSO 重定向到 Microsoft,然后我们从它们进入应用程序。我面临的问题是,当我设置浏览器 - headless : false 时,一切正常,但是当我设置 headless: true 时,Gmail 开始要求验证码,有时它说浏览器不安全。
\n我已经尝试解决这个问题很长一段时间了,但我完全盲目了。我通过互联网阅读并发现了很多选项,例如设置用户代理、添加首选项等,但它们都不起作用。
\n这是我的简单代码和屏幕截图。
\n// puppeteer-extra is a drop-in replacement for puppeteer,\n// it augments the installed puppeteer with plugin functionality\nconst puppeteer = require(\'puppeteer-extra\');\n//puppeteer.use(require(\'puppeteer-extra-plugin-stealth\')());\n\n// add stealth plugin and use defaults (all evasion techniques)\nconst StealthPlugin = require(\'puppeteer-extra-plugin-stealth\');\nconsole.log(StealthPlugin.availableEvasions);\npuppeteer.use(StealthPlugin());\n//const RecaptchaPlugin = require(\'puppeteer-extra-plugin-recaptcha\')\n\n\n//const puppeteer = require(\'puppeteer\')\n\n// puppeteer usage as normal\npuppeteer.launch({ headless: true, executablePath: \'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\', setUserAgent: \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like …Run Code Online (Sandbox Code Playgroud) const bot = require("puppeteer");
const fs = require("fs");
const botConfiguration ={
headless:false,
executablePath:"C:/Program Files/Google/Chrome/Application/chrome.exe",
userDataDir: "C:/Users/bot/AppData/Local/Google/Chrome/User Data/",
args: ['--profile-directory=Profile 28']
};
async function runBot() {
const chromeBrowser = await bot.launch(botConfiguration)
const chromeBrowserPage = await chromeBrowser.newPage()
await chromeBrowserPage.goto("https://www.google.com/")
};
runBot();
Run Code Online (Sandbox Code Playgroud)
Puppeteer 旧的 Headless 弃用警告:
在不久的将来,headless: trueChrome 将默认使用新的 Headless 模式,而不是旧的 Headless 实现。有关更多信息,请参阅https://developer.chrome.com/articles/new-headless/。考虑尽早选择加入headless: "new"如果您遇到任何错误,请向https://github.com/puppeteer/puppeteer/issues/new/choosepuppeteer.launch()
报告。
我不想在我的终端中看到这个错误............
Puppeteer 旧的 Headless 弃用警告:
automation headless headless-browser google-chrome-headless puppeteer
Google 制作AJAX应用程序的完整规范Crawlable建议使用HTMLUnit ...请参阅如何创建HTML快照?第3点.
HtmlUnit是一个仅限Java的无头浏览器模拟器; 不幸的是,jRuby不是Heroku的选项.所以HtmlUnit被排除了(据我所知).
如果你感兴趣我还有另外一个问题,关于HtmlUnit作为托管在Google App Engine上的服务...... 让AJAX应用程序可以抓取吗?如何在Google App Engine上构建简单的Web服务来生成HTML快照?......仍在等待一个经过验证的例子/答案.
我正在使用 python Selenium,以及 digitalocean 的无头 ubuntu,其中有无头 Chrome。我用了
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
Run Code Online (Sandbox Code Playgroud)
在 senium.webdriver.common.keys
但这不起作用。
我导入了所需的所有内容,没有 python 语法错误,并成功运行,但选项卡未随我的代码切换。
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
Run Code Online (Sandbox Code Playgroud)
也不起作用。相同的代码可以在我的本地计算机上的选项卡之间切换,该计算机具有物理键盘和显示器。顺便说一句,我将 pyvirtualdisplay 与我的无头 Chrome 一起使用。
我怀疑使用 headless Ubuntu 和 headless Chrome 可能会导致这个问题。我猜想无头 Ubuntu 无法发送密钥,如上面代码所示。
如何让我的远程无头 Ubuntu 将密钥发送到浏览器?
实际上我想在不想打开任何浏览器的服务器上运行我的selenium代码.但我很困惑哪个webdriver用于执行所有任务的服务器(我从某个站点下载一些文件并存储在我的服务器中).
selenium webdriver headless headless-browser selenium-webdriver
我想要的是刮一张表,并将数据保存在一个数组中,例如result=[tr][ts].
我怎样才能得到我想要的结果?
我正在尝试这样的事情:
const row = await mainframe.$$eval('#clasificacion > .panel > .table- responsive > #resultadosTable > tbody > tr ', trs => trs.map((tr) =>{
console.log(tr);
return tr.textContent;}));
Run Code Online (Sandbox Code Playgroud)
但结果就像result=[tr]。
javascript node.js headless-browser google-chrome-devtools puppeteer
我正在尝试使用 Puppeteer 登录 Instagram,但不知何故我无法做到。
你能帮助我吗?
这是我正在使用的链接:
https://www.instagram.com/accounts/login/
我尝试了不同的东西。我试过的最后一个代码是这样的:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.instagram.com/accounts/login/');
await page.evaluate();
await afterJS.type('#f29d14ae75303cc', 'username');
await afterJS.type('#f13459e80cdd114', 'password');
await page.pdf({path: 'page.pdf', format: 'A4'});
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试绕过 web.whatsapp.com 二维码扫描页面。这是我到目前为止使用的代码:
options = webdriver.ChromeOptions();
options.add_argument('--user-data-dir=./User_Data')
driver = webdriver.Chrome(options=options)
driver.get('https://web.whatsapp.com/')
Run Code Online (Sandbox Code Playgroud)
第一次尝试时,我必须手动扫描 QR 码,而在以后的尝试中,它不会要求提供 QR 码。
但是,如果我在添加此行 chrome_options.add_argument("--headless") 后尝试执行相同的操作,则会出现将 DevTools 活动端口写入文件时出错。我尝试了至少十几种不同的谷歌搜索解决方案,但没有一个有效。对此的任何帮助将不胜感激!谢谢。
到目前为止,尝试了不同组合中的一堆不同参数,但没有任何效果:
options = Options() #decomment for local debugging
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-setuid-sandbox')
options.add_argument('--remote-debugging-port=9222')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu') # Last I checked this was necessary.
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument('--user-data-dir=./User_Data')
driver = webdriver.Chrome('chromedriver.exe', options=options)
driver.get('https://web.whatsapp.com/')
Run Code Online (Sandbox Code Playgroud) 我需要做些什么才能?_escaped_fragment_=为我的服务器添加支持?我希望谷歌能够通过我的ajax网站进行抓取.我的哈希已经#!形成了
但我不知道如何告诉我的服务器,当我进入mywebsite.com/?_escaped_fragment_=section我的浏览器,所以网址mywebsite.com/section和它将等于mywebsite.com/#!
谢谢
如何使用Page.setDownloadBehavior在Chrome浏览器开发工具来传递,这样我可以用下面的代码设置为无头镀铬的下载行为?
Create Chrome Browser
[Arguments] ${link_to_open}
${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
${prefs}= Create Dictionary download.default_directory=${DOWNLOADS_DIR}
Call Method ${chrome options} add_argument headless
Call Method ${chrome options} add_argument disable-gpu
Selenium2Library.Go To ${link_to_open}
Run Code Online (Sandbox Code Playgroud) 主要区别在于,在GUI基和非GUI基(Headless)上执行。
我正在寻找所有无头浏览器之间的差异,但是很遗憾,我没有找到任何差异。我一个接一个地讲,这使我更加困惑。如果有人可以分享具有差异的简短信息,那就太好了,这很清楚。
selenium headless headless-browser selenium-webdriver htmlunit-driver
headless-browser ×11
headless ×4
puppeteer ×4
selenium ×4
javascript ×2
node.js ×2
ajax ×1
automation ×1
googlebot ×1
hash ×1
heroku ×1
hosting ×1
python ×1
watir ×1
web-crawler ×1
web-scraping ×1
webdriver ×1
whatsapp ×1