谷歌无头浏览器与反检测

谷歌无头浏览器

由于PhantomJs已经停止了更新和维护,所以推荐使用谷歌无头浏览器,是一款无界面的谷歌浏览器

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options

""" 实现无可视化界面的操作 """
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

browser = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options)

# 无可视化界面(无头浏览器)
browser.get('https://www.baidu.com')
print(browser.page_source)

sleep(3)
browser.quit()

selenium规避被检测识别

现在不少网站都有对selenium采取了监测机制,比如正常情况下我们用浏览器访问淘宝等网站的window.navigator.webdriver的值为 undefined,而使用 selenium访问则该值为 true,那么如何解决这个问题呢?

只需要设置chromedriver的启动参数即可解决。在启动chromedriver之前,为chromedriver开启实验性功能参数excludeSwitches,它的值为['enable-automation'],示例代码如下:

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(option=option)

完整代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ChromeOptions

""" 实现无可视化界面的操作 """
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

""" 实现规避检测 """
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])


browser = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options, options=option)
# 无可视化界面(无头浏览器)
browser.get('https://www.baidu.com')
print(browser.page_source)

sleep(3)
browser.quit()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
浏览器指的是没有图形界面的浏览器,可以在后台运行并进行网页自动化操作。在Node.js中,可以使用Puppeteer库来实现无浏览器功能。 Puppeteer是一个由Google开发的用于控制Chrome或Chromium浏览器的Node.js库。它提供了一组API,可以模拟用户在浏览器中进行的各种操作,例如页面导航、表单提交、截图等。 要使用Puppeteer,首先需要安装它。可以通过运行以下命令来安装: ``` npm install puppeteer ``` 安装完成后,可以使用以下代码来创建一个基本的无浏览器实例: ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); // 在这里执行一些操作,如页面导航、表单提交等 await browser.close(); })(); ``` 在这个例子中,我们使用`puppeteer.launch()`方法来启动一个浏览器实例,并使用`browser.newPage()`方法创建一个新的页面。然后,可以在`page`对象上执行各种操作。 例如,可以使用`page.goto(url)`方法导航到指定的网页,使用`page.type(selector, text)`方法填写表单字段,使用`page.click(selector)`方法点击页面元素,使用`page.screenshot(options)`方法截取页面截图等等。 最后,使用`browser.close()`方法关闭浏览器实例。 这只是Puppeteer的一些基本用法,还有更多高级功能可以探索。你可以查阅Puppeteer的官方文档以获取更详细的信息和示例代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值