首页 > 其他分享 >DrissionPage过5秒盾:反CloudFlare反爬

DrissionPage过5秒盾:反CloudFlare反爬

时间:2024-09-09 13:53:46浏览次数:7  
标签:co get url 反爬 秒盾 537.36 DrissionPage CloudFlare page

5秒盾实例

偶尔有用的解决方式:

curl_cffi可以实现一些简单的反5秒盾。

pip install curl_cffi
from curl_cffi import requests as cffi_requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
}
url = ""
res = cffi_requests.get(url, impersonate='chrome110', timeout=10)
print(res.status_code, res.cookies)

无效的网站会返回 403 <Cookies[]>。

DrissionPage反反爬

这里采用DrissionPage自动化来反反爬。

pip install DrissionPage

安装后,编写代码:

from DrissionPage import ChromiumPage
from DrissionPage import ChromiumOptions
co = ChromiumOptions()
page = ChromiumPage(co)
url = ""
page.get(url)
page.wait(5)
print(page.user_agent)
page.get_screenshot(path=r"./test_browser_page.png", full_page=True)
page.quit()

没有开启无头模式时,通过保存截图可以确认正常绕开了5秒盾。如果只需要本地运行,到这里就够了。

但是本任务需要部署到没有GUI的linux服务器,也就意味着浏览器必须是无头模式。尝试修改代码:

from DrissionPage import ChromiumPage
from DrissionPage import ChromiumOptions
co = ChromiumOptions()
co.set_argument('--headless', True) # 无头模式
page = ChromiumPage(co)
url = ""
page.get(url)
page.wait(5)
print(page.user_agent)
page.get_screenshot(path=r"./test_browser_page.png", full_page=True)
page.quit()

结果一看截图,发现又被CloudFlare给拦截了。原来问题出在UA上:

print(page.user_agent)

打印结果是:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/128.0.0.0 Safari/537.36

可以发现里面有`HeadlessChrome`这一串,导致被CloudFlare给拦截了。因此只需要设置一下UA就好了!部署到服务器上后,中间一直有如下的报错:

DrissionPage.errors.BrowserConnectError:
127.0.0.1:18364浏览器无法链接。
请确认:
1、该端口为浏览器
2、已添加'--remote-debugging-port=18364'启动项
3、用户文件夹没有和已打开的浏览器冲突
4、如为无界面系统,请添加'--headless=new'参数
5、如果是Linux系统,可能还要添加'--no-sandbox'启动参数
可使用ChromiumOptions设置端口和用户文件夹路径。

修改后代码如下:


from DrissionPage import ChromiumPage
from DrissionPage import ChromiumOptions
# 创建页面对象
co = ChromiumOptions().auto_port()  # 指定程序每次使用空闲的端口和临时用户文件夹创建浏览器
co.headless(True)   # 无头模式
co.set_argument('--no-sandbox')  # 无沙盒模式
co.set_argument('--headless=new')  # 无界面系统添加
co.set_paths(browser_path="/opt/google/chrome/google-chrome")  # 设置浏览器路径
co.set_argument('--disable-gpu')    # 禁用gpu,提高加载速度
co.set_user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36") 
page = ChromiumPage(co)
url = ""
page.get(url)
page.wait(5)
print(page.user_agent)
page.get_screenshot(path=r"./test_browser_page.png", full_page=True)
with open(r"./test_browser.html", "w", encoding="utf-8") as f:
    f.write(page.html)
page.quit()

设置UA后从截图来看,真的做到了绕开这个5秒盾。其中set_paths用来在服务器上指明chrome路径,本地部署可忽略(?)。

参考爬虫自动化之drissionpage在linux无头模式下过五秒盾Cloudflare

小插曲

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

中间设置成这个UA也不行,CloudFlare好像也不接受过老版本的浏览器(这里是91.0所以失败了)。

标签:co,get,url,反爬,秒盾,537.36,DrissionPage,CloudFlare,page
From: https://blog.csdn.net/m0_55893050/article/details/141957598

相关文章

  • 腾讯云域名托管到 cloudflare
    cloudflarehttps://dash.cloudflare.com/腾讯云域名列表https://console.cloud.tencent.com/domain/all-domain/all先进入腾讯云列表,点击自己已购买的域名点击修改;https://console.cloud.tencent.com/domain/all-domain/all修改为cloudflare提供的,如下:进入https://da......
  • 使用cloudflare的免费workers建立一个esp32cam监控的方案研究
    一开始我是研究了websocketshttps://developers.cloudflare.com/workers/examples/websockets/esp32cam--workers--手机浏览器其中workers的逻辑是,把esp32cam的图片数据保存在一个内存变量中,然后在手机浏览器请求的时候,把这个图片转发出去。 如果您的应用程序需要在多个Web......
  • Cloudflare Workers 每日免费限制 超出流量自动关闭 - 失败模式 改为 失败时自动关闭
    cloudflareworkers每日免费限制超出流量自动关闭-失败模式改为失败时自动关闭(阻止)位置在Workers和Pages-相应的workers-设置-函数-更改失败模式改为失败时自动关闭(阻止)这个设置,网上竟然没有人说,这么重要的事情,应该要设置,必须要设置!!注意:设置后记得从新部署......
  • 使用 Python 和 Selenium 解决 Cloudflare 验证码
     在网络自动化测试或网页数据抓取的过程中,Cloudflare验证码是许多开发者遇到的棘手问题。这一验证码设计的初衷是为了保护网站免受恶意攻击,但它也给合法的自动化操作带来了不小的挑战。那么,使用Python和Selenium,是否有办法有效应对并解决Cloudflare验证码的问题?有哪些技巧和方......
  • 使用Cloudflare Worker搭建自己的AI绘画工具
    demo:https://aidraw.foxhank.top0.前言Cloudflare公司推出了workers-ai,可以免费在Cloudflare的全球网络上运行由无服务器GPU提供支持的机器学习模型。WorkersAI可以Cloudflare网络上使用自己的代码运行机器学习模型,也就是说,只要写一个js代码,就可以免费调用cloudfl......
  • 免费域名注册教程:可托管cloudflare,无需双向解析、了解什么是域名
    前言在使用域名前,你需要知道域名的基本知识,如果你已经知道了基本的域名知识可以跳过这一段。什么是域名?通常情况下,你是通过IP地址加端口号来访问网站的。有了域名之后,你就可以通过域名来访问这个IP和端口,从而更加方便地访问你的网站。使用域名有什么好处?增强网站的SEO:一个......
  • 利用 Cloudflare workers 反代 github
    反代Github似乎会被认定为欺诈,严重的会封禁域名,不建议尝试首先绑定你的域名到cloudflare,然后创建一个Worker后写入以下代码并添加自定义域名//反代目标网站.constupstream='github.com';//反代目标网站的移动版.constupstream_mobile='github.com';//访问......
  • 利用 Cloudflare Pages 部署免费 Telegraph 图床
    TelegraphImage是一个可以作为Flickr和imgur替代品的免费图片托管服务。本教程将指导您如何通过CloudflarePages免费部署和使用TelegraphImage。项目地址https://github.com/cf-pages/Telegraph-Image部署步骤准备工作首先,确保您拥有一个Cloudflare账户,并已将......
  • selenium 反反爬-淘宝,美团
    1.反爬有时候,我们利用Selenium自动化爬取某些网站时,极有可能会遭遇反爬。实际上,我们使用默认的方式初始化WebDriver打开一个网站,下面这段JS代码永远为true,而手动打开目标网站的话,则为:undefined#通过这段JS脚本区分是爬虫还是人工操作window.navigator.webdriver2.......
  • Cloudflare网址扫描器
          CloudflareURLScanner(Cloudflare网址扫描器)是Cloudflare提供的一项服务,它可以帮助网站管理员和用户检测和预防恶意软件、钓鱼网站和其他网络安全威胁。这项服务通常集成在Cloudflare的安全产品中,使用场景包括但不限于:网站安全监测:自动扫描网站链接,检测是否含......