如何使用FlareSolverr来抓取Cloudflare网站
2025-10-28 14:57 狼人:-) 阅读(0) 评论(0) 收藏 举报
有没有想过抓取网站以获取有价值的数据,但突然发现它使用了Cloudflare,然后感到失望?那么现在不需要再感到沮丧了,因为有一个实际的解决方案来解决这个问题,它叫做FlareSolverr。
使用FlareSolverr,您可以轻松绕过Cloudflare的限制,并获取以前无法访问的网站的抓取访问权限。
在本指南中,您将学习如何安装和使用FlareSolverr以进行无限制的数据抓取。除此之外,您还将了解如何使用POST请求和管理会话以实现更有效的流程。请继续阅读以了解更多信息。
什么是FlareSolverr?
FlareSolverr 是一个代理服务器,允许您抓取受 Cloudflare 保护的网站并克服其限制。以下是其工作原理。
一旦收到请求,FlareSolverr 就会创建一个基于 Chrome 的网页浏览器,并使用用户参数打开你的目标 URL。然后,它会等待直到解决 Cloudflare 挑战。最后,它会返回内容和 cookies,这样你就可以使用它们通过 Python Request 等 HTTP 客户端绕过 Cloudflare。
小贴士:要让你的抓取过程更进一步,可以考虑将FlareSolverr与移动代理结合使用。
如何安装FlareSolverr
FlareSolverr 支持 Windows、Linux 和 macOS,您可以使用其 docker 镜像、预编译的二进制文件或源代码进行安装。在本教程中,您将学习如何使用 Docker 容器安装它。这种方法的主要好处是,docker 镜像已经预装了外部浏览器,您需要它来使 FlareSolverr 正常工作。
1. 安装软件依赖项
在安装FlareSolverr之前,您应首先考虑其软件依赖项,如下所示。
- 使用其官方指南安装Docker在你的操作系统上。
- 更新libseccomp2到2.5或更高版本(仅限Debian用户)。
如果你正在以超级用户权限运行 Ubuntu,使用以下三个命令是安装 Docker 的最快和最简单的方法。
apt-get install docker.io
systemctl enable docker
systemctl start docker
2. 使用其Docker镜像安装FlareSolverr
使用以下命令在 Linux、Windows 或 Mac 上从 docker 镜像安装 FlareSolverr。如果你在没有 root 权限的 Linux 上使用,请记得添加 “sudo”。
docker pull flaresolverr/flaresolverr
如需更多信息,您可以使用以下链接找到FlareSolverr的Docker镜像。
GitHub: https://github.com/orgs/FlareSolverr/packages/container/package/flaresolverr
DockerHub: https://hub.docker.com/r/flaresolverr/flaresolverr
3. 运行 FlareSolverr
您现在可以在 Linux、Windows 或 Mac 上使用以下命令运行 FlareSolverr。如果您在没有 root 权限的 Linux 系统上使用,请记得添加 “sudo”。
docker run -d \
--name=flaresolverr \
-p 8191:8191 \
-e LOG_LEVEL=info \
--restart unless-stopped \
ghcr.io/flaresolverr/flaresolverr:latest
4. 验证 FlareSolverr 正在运行
最后,通过在浏览器中打开以下URL来测试FlareSolverr是否正常工作。
网址: http://localhost:8191
如果你看到类似“FlareSolverr 准备好了!”的响应,你可以放心地认为你已经成功安装。
就是这样。现在是时候学习如何使用这个神奇的工具从Cloudflare保护的网站中获取你需要的所有数据了。
如何使用FlareSolverr
如您将在本节的后续部分所看到的,有两大主要方法使用FlareSolverr来抓取网站数据。但在深入研究这些方法之前,您应该先看看两个简单的请求示例。第一个示例将依赖于bash和curl,而第二个示例则利用了Python Requests。
运行一个 Curl 请求
如果你想直接从bash中使用FlareSolverr,你可以使用curl命令。参考下面的代码片段。
curl -L -X POST 'http://localhost:8191/v1' \
-H 'Content-Type: application/json' \
--data-raw '{"cmd": "request.get","url":"http://www.website.com","maxTimeout": 60000
}'
运行Python请求
另一方面,您可以选择使用Python Requests来实现相同的功能。请参考下面的代码片段。
import requests
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {"cmd": "request.get","url": "http://www.website.com","maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
输出示例
如果一切按预期进行,你的输出应如下所示。
{"status": "ok","message": "Challenge solved!","solution": {"url": "https://website.com","status": 200,"cookies": [{"domain": "website.com","httpOnly": false,"name": "2F_TT","path": "/","secure": true,"value": "0"},],"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36","headers": {},"response": "<html><head>...</head><body>...</body></html>"},
}
使用 Python Requests 进行网页抓取
您可以配置FlareSolverr以检索有效的Cloudflare cookies,并使用Python Requests与它们一起工作。这是爬取Cloudflare网站最具资源效率的方法。请参阅下面的代码片段以供参考。
import requestspost_body = {"cmd": "request.get","url":"https://website.com","maxTimeout": 60000
}
response = requests.post('http://localhost:8191/v1', headers={'Content-Type': 'application/json'}, json=post_body)if response.status_code == 200:json_response = response.json()if json_response.get('status') == 'ok':cookies = json_response['solution']['cookies']clean_cookies_dict = {cookie['name']: cookie['value'] for cookie in cookies}# Fetches cookiesuser_agent = json_response['solution']['userAgent']# Fetches user agentheaders={"User-Agent": user_agent}# Creates a requestresponse = requests.get("https://website.com", headers=headers, cookies=clean_cookies_dict)if response.status_code == 200:print('Success')
使用网址列表进行抓取
或者,您也可以使用FlareSolverr和页面URL列表来简化此过程。在这种情况下,您将不得不依赖于其集成的HTTP客户端,这将需要更多的服务器或计算机资源。请参阅下面的代码片段以供参考。
import requestsurl_list = ['https://website1.com','https://website2.com','https://website3.com',
]
for url in url_list:post_body = {"cmd": "request.get","url": url,"maxTimeout": 60000
}response = requests.post('http://localhost:8191/v1', headers={'Content-Type': 'application/json'}, json=post_body)if response.status_code == 200:json_response = response.json()if json_response.get('status') == 'ok':html = json_response['solution']['response']print('Success')
如何管理会话
如果您需要使用Cloudflare的Cookies一段时间,您可以设置FlareSolverr会话。通过这样做,您将不再需要反复解决Cloudflare的挑战或在每次发送请求时都发送Cookies。
您可以使用FlareSolverr通过以下列出的命令来创建、列出和删除会话。
- 会话创建
- 会话列表
- 会话.销毁
继续阅读,了解如何使用每一个。
创建会话
要创建一个会话,请将“cmd”设置设置为“session.create”。参考下面的代码片段。
import requests
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {"cmd": "sessions.create","url": "https://website.com","maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data)
print(response.content)
如果一切顺利,您应该会看到一个包含“会话创建成功。”的输出。
列出会话
如果你想检查你的活动会话,可以通过它们的ID列出它们。要这样做,请将“cmd”设置为“sessions.list”。以下是供参考的代码片段。
curl -L -X POST 'http://localhost:8191/v1' \
-H 'Content-Type: application/json' \
--data-raw '{"cmd": "sessions.list","url":"http://website.com","maxTimeout": 60000
}'
移除一个会话
既然你已经知道你的会话ID,你就可以用它来移除会话。要移除一个会话,将“cmd”设置为“session.destroy.”,并将“session”设置为正确的ID。下面的代码片段供你参考。
curl -L -X POST 'http://localhost:8191/v1' \
-H 'Content-Type: application/json' \
--data-raw '{"cmd": "sessions.destroy","session": "session_ID","url":"http://website.com","maxTimeout": 60000
}'
现在你已经了解了管理 FlareSolverr 会话的所有内容。
如何发送POST请求
如果你需要从POST端点检索Cloudflare cookies,可以使用FlareSolverr来发送POST请求。为此,你需要通过将“request.get”替换为“request.post”来配置cmd设置。下面的代码片段可供参考。
import requests
post_body = {"cmd": "request.post","url":"https://www.website.com/POST","postData": POST_DATA,"maxTimeout": 60000
}
response = requests.post('http://localhost:8191/v1', headers={'Content-Type': 'application/json'}, json=post_body)
print(response.json())
在设置“POST_DATA”时,请记住使用 application/x-www-form-urlencoded 格式的字符串(例如 a=b&c=d)。
最后的话
FlareSolverr 是一个非常有效的工具,您可以使用它来绕过 Cloudflare 限制并抓取之前发现无法访问的数据。与移动代理结合使用,FlareSolverr 可以将您的抓取实践提升到一个新的水平。
通过这个分步指南,您已经学会了如何有效地安装和运行此软件。此外,现在您知道如何以各种方式使用它,并且还可以通过会话更有效地管理它。
按照这些说明操作,抓取受Cloudflare保护的网站将变得轻而易举。现在是时候自己测试一下并享受这款神奇软件的好处了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948819.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!