0%

selenium 破解 cloudflare 5秒验证

selenium 破解 cloudflare 5秒验证

cloudflare 5秒验证破解

1、在被cloudflare保护的网站爬取数据的时候,首次请求会出现503

不携带COOKIE 即出现503

2、cookie 具有时效(具体时效未曾测试)

3、selenium 无头模式被 cloudflare 拿捏了,

根据 https://zhuanlan.zhihu.com/p/542766089 博文技术讲解,方法测试如下

Undetected-chromedriver 过 5s验证

import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get('https://nowsecure.nl')
但是 重点来了 !!!
我们平常都是在服务器上跑 python 代码,而服务器 当然绝大多数是不会使用显示器的, 而 cloudflare 却在 JS 中添加了检测显示器的代码。
然后…. 是不是有一种东西 可以让 python 暂时使用 一个伪造的 显示器环境?

还真有!!!

centos7安装 虚拟显示器环境 Xvfb

yum update
yum install Xvfb
yum install libXfont
yum install xorg-x11-fonts*

正常使用代码

import time
import undetected_chromedriver as uc # pip3 install undetected_chromedriver
from pyvirtualdisplay import Display # pip3 install pyvirtualdisplay


# 虚拟显示器设置
display = Display(visible=0, size=(1024, 768))
display.start()

# # 无头模式
# chrome_options = uc.ChromeOptions()
# chrome_options.add_argument("--no-sandbox")
# chrome_options.add_argument("--disable-dev-shm-usage")
# chrome_options.add_argument("--start-maximized")
# chrome_options.add_argument('--disable-popup-blocking')
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--no-sandbox')
# chrome_options.add_argument('--disable-gpu')
# driver = uc.Chrome(options=chrome_options)

# 有头模式
driver = uc.Chrome()
driver.get('请求网址')
time.sleep(5)

# 打印网页源代码
print(driver.page_source)

# 打印cookies
print(driver.get_cookies())

# 退出浏览器
driver.close()
driver.quit()

# 停止虚拟显示器
display.stop()