如何从受 Cloudflare 保护的网站抓取 cf_clearance Cookie

如何从受 Cloudflare 保护的网站抓取 cf_clearance Cookie

在本文中,我将指导您从受 Cloudflare 保护的网站中抓取 cf_clearance cookie,并向您展示如何使用它来克服 Cloudflare 的限制,使您能更轻松地抓取所需的数据。

什么是 cf_clearance Cookie?

Cloudflare 是一项通过检测和阻止自动流量来提供网站保护的流行服务。Cloudflare 使用各种方法来识别机器人,包括分析 IP 地址、检测可疑行为模式以及使用验证码或 JavaScript 挑战请求。

当您访问受 Cloudflare 保护的网站时,经常会遇到这些挑战,您必须解决这些挑战才能获准访问该网站。一旦您成功通过这些挑战,Cloudflare 就会发出一个名为 cf_clearance 的特殊 cookie。此 cookie 可作为您已解决安全挑战的证明,并允许您绕过 Cloudflare 的保护访问网站。

但是,有一个问题:要想成功地从 Cloudflare 后面搜刮内容,您需要检索此 cf_clearance cookie 并在后续请求中使用它。如果 cookie 丢失或过期,Cloudflare 将阻止您的搜刮尝试。

为什么扫描 cf_clearance Cookie 很重要?

刮擦受 Cloudflare 保护的网站时,cf_clearance cookie 至关重要。如果您没有通过挑战并检索 cookie,您的请求将被 Cloudflare 屏蔽。cf_clearance cookie 是一个访问密钥,允许您绕过 Cloudflare 的安全机制,搜刮所需的数据。

获得 cf_clearance cookie 后,就可以用它来验证请求。不过,需要注意的是,cookie 是基于会话的,这意味着您必须在整个刮擦会话期间保持相同的 IP 地址和 User-Agent。如果您更改了其中任何一个,Cloudflare 将阻止您的访问。

如何抓取 cf_clearance Cookie?

从受 Cloudflare 保护的网站中抓取 cf_clearance cookie 可能比较棘手,因为 Cloudflare 使用多种技术来检测和阻止僵尸。在本节中,我将向您介绍如何使用名为 CF-Clearance-Scraper 的工具抓取 cf_clearance cookie。该命令行工具可自动完成解决 Cloudflare 挑战和检索 cf_clearance cookie 的过程。

步骤 1:安装 CF-Clearance-Scraper

第一步是安装 CF-Clearance-Scraper 包。这个工具专为配合使用而设计 Python 3.10  并在幕后运行一个无头 Chrome 浏览器实例,以解决 Cloudflare 面临的挑战。

克隆版本库:先从 GitHub 克隆 CF-Clearance-Scraper 仓库:

笨蛋 复制 https://github.com/Xewdy444/CF-Clearance-Scraper

安装所需的依赖项:克隆版本库后,导航至文件夹,使用 pip 安装必要的依赖项:

CD CF-Clearance-Scraper
pip3 install -r requirements.txt

现在,您可以开始从受 Cloudflare 保护的网站中抓取 cf_clearance cookie。

步骤 2:了解 CF-净空-斜面参数

CF-Clearance-Scraper 通过运行带有一组参数的 main.py 文件来工作。这些参数可控制该工具如何与 Cloudflare 的保护措施交互并检索 cf_clearance cookie。

关键参数是

  • -f:指定以 JSON 格式保存 cookie 的输出文件名。
  • -t:设置请求的超时时间(以秒为单位)。这决定了工具等待挑战解决的时间。
  • -p:指定代理 URL,这对避免刮擦时被发现至关重要。
  • -ua:设置请求的 User-Agent 头信息。使用有效的 User-Agent 对避免被检测很重要。
  • URL:你要抓取的受 Cloudflare 保护的网站 URL。

运行 CF-Clearance-Scraper 的命令如下:

python main.py -p <代理地址> -t <超时秒数> -ua "<user_agent_string>" -f <COOKIE_FILE.json> <目标网址>

步骤 3:扫描 cf_clearance Cookie

要抓取 cf_clearance cookie,您需要使用适当的参数运行 CF-Clearance-Scraper 工具。例如,假设您想从一个受 Cloudflare 保护的页面上抓取 cf_clearance cookie。您可以运行以下命令:

python main.py -p http://190.58.248.86:80 -t 60 -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36" -f cookies.json https://www.scrapingcourse.com/cloudflare-challenge

在该命令中

  • 代理:我们使用代理服务器来避免被发现。您可以选择使用任何代理,例如 免费代理 或 高级网络搜索代理.
  • 超时:我们将超时时间设置为 60 秒,这意味着该工具将最多等待 60 秒来解决 Cloudflare 挑战。
  • User-Agent:我们使用通用的 User-Agent 字符串来模拟真实浏览器。
  • 输出文件:cookie 将保存到名为 cookies.json 的文件中。

命令成功执行后,工具将在终端中打印 cf_clearance cookie,所有 cookie 将保存在 cookies.json 文件中。

步骤 4:以编程方式提取 cf_clearance Cookie

虽然 cf_clearance cookie 会在终端中输出,但以编程方式提取它往往更方便。您可以使用 Python 的子进程模块,在 Python 脚本中运行 CF-Clearance-Scraper 工具,并使用正则表达式提取 cf_clearance cookie。

下面是一个运行 CF-Clearance-Scraper 工具并提取 cf_clearance cookie 的 Python 脚本示例:

import 子进程
import re
def cf_clearance_scraper(url、代理、user_agent):
命令 = [
"python",
"main.py",
"-p",
代理、
"-t",
"60",
"-ua",
user_agent、
"-f",
"cookie.json",
url、
]
try:
# 运行命令并捕捉输出结果
process = subcess.run(
命令、
stdout=subprocess.PIPE、
stderr=subprocess.STDOUT、
text=True,
)
output = process.stdout
# 使用 regex 从日志中提取 cf_clearance 值
match = re.search(r "cf_clearance=([^s] )",输出)。
if match:
cf_clearance = match.group(1)
return cf_clearance
else:
return None
except Exception as e:
print(f "运行命令出错: {e}")
return None
# 使用示例
url = "https://www.scrapingcourse.com/cloudflare-challenge"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"
proxy = "http://190.58.248.86:80"
cf_clearance = cf_clearance_scraper(url, proxy, user_agent)
if cf_clearance:
print(f "cf_clearance cookie: {cf_clearance}")
else:
print("检索 cf_clearance cookie 失败"。)

该脚本使用指定参数运行 CF-Clearance-Scraper 工具,捕获输出,并使用正则表达式提取 cf_clearance cookie。如果成功,它会打印 cookie;否则,它会打印错误信息。

第 5 步:使用 cf_clearance Cookie 绕过 Cloudflare

现在,您已经拥有了 cf_clearance cookie,可以使用它绕过 Cloudflare,向受保护的网站发出刮擦请求。在这一步中,我们将使用请求库来发送 HTTP 请求,同时传递 cf_clearance cookie。

下面介绍如何将 cf_clearance cookie 集成到您的刮擦代码中:

import requests
def 刮刀(url、cf_clearance、代理、user_agent):
session = requests.Session()
# 在会话中设置 cf_clearance cookie
session.cookies。set("cf_clearancecf_clearance)
# 设置用户代理标头
session.headers.update({"User-Agent": user_agent})
# 设置会话代理
session.proxies.update(
{
"http": 代理,
"https":代理、
}
)
try:
# 向目标 URL 发出请求
response = session.get(url)
response.raise_for_status()
return response.text
except requests.exceptions.RequestException as e:
return f "请求出错: {e}"
# 使用示例
response = scraper(url, cf_clearance, proxy, user_agent)
print(答复)

在这段代码中,scraper 函数接受 cf_clearance cookie 以及目标 URL、代理和 User-Agent。它会使用 requests.Session() 对象创建一个持久会话,并为该会话设置 cf_clearance cookie、User-Agent 和 proxy。然后使用会话向目标 URL 发出 GET 请求。

结论

通过获取 cf_clearance cookie 并将其用于您的请求,您可以绕过 Cloudflare 的保护,从受保护的网站上获取数据。虽然 CF-Clearance-Scraper 很有效,但它也有一些局限性,包括需要一致的 IP 和 User-Agent,以及 cookie 在会话期间过期的风险。

为减少 IP 禁止或过期 cookies 等问题,必须使用旋转代理并有效管理会话。服务,如 Bright Data 可以提供高级代理管理和粘性会话,帮助您保持对资源的一致访问。有了这些技巧,你就能更高效地搜索受 Cloudflare 保护的网站。

类似文章