环境: Debian11 + Chromium 120.0.6099.224
花了2个小时在网上试了十几个教程没一个能用, 就很难绷。
后面自己花了时间总算试出来了。
- chromium
- 他里面就已经包含了
chromium-driver
不需要我们再额外下载了 - 包范围: https://packages.debian.org/bullseye/chromium
- 他里面就已经包含了
- xvfb
- 用来欺骗 Selenium 或者 Puppeteer,让它以为自己运行在一个有图形界面的系统里面
apt install -y chromium xvfb python3 python3-pip
pip3 install selenium
- 试一下
- 如果你没有报错, 就说明一切顺利, 没有问题了
xvfb-run chromium --no-sandbox --disable-gpu --enable-chrome-browser-cloud-management --remote-debugging-port=9222
- 接下来我们新建一个
crawler.py
文件
from selenium import webdriver
# 创建 Options 对象
options = webdriver.ChromeOptions()
#options.add_argument('--headless') # 无头模式,不打开图形界面
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--enable-chrome-browser-cloud-management')
# 启动浏览器
driver = webdriver.Chrome(options=options)
driver.get('https://bot.sannysoft.com/')
driver.save_screenshot('screenshot.png')
运行
xvfb-run python3 crawler.py
没错, 就是这么简单, 网上一堆教程说要去下
chromedriver
给我整不会了, 远古教程, 就算是win10上现在也不用下这玩意
- 隐藏指纹
https://github.com/requireCool/stealth.min.js/blob/main/stealth.min.js
from selenium import webdriver
import time
# 创建 Options 对象
options = webdriver.ChromeOptions()
#options.add_argument('--headless') # 无头模式,不打开图形界面
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--enable-chrome-browser-cloud-management')
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
options.add_argument("--disable-blink-features=AutomationControlled")
# 启动浏览器
browser = webdriver.Chrome(options=options)
with open('stealth.min.js') as f:
js = f.read()
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": js
})
time.sleep(2)
browser.get('https://bot.sannysoft.com/')
browser.set_window_size(1600, browser.execute_script("return document.body.scrollHeight"))
# 等待一段时间确保页面稳定加载
time.sleep(2)
# 截取当前页面的截图
browser.save_screenshot('screenshot_page.png')