cURL - 加载具有 CloudFlare 保护的站点

Posted

技术标签:

【中文标题】cURL - 加载具有 CloudFlare 保护的站点【英文标题】:cURL - Load a site with CloudFlare protection 【发布时间】:2013-09-01 05:54:17 【问题描述】:

我有一个要使用 cURL 加载的网站。但是,我正在谈论的站点正在使用 cloudflare 保护。在 cURL 请求 => 时,它说“检查您的浏览器,您将在 5 秒内被重定向”,我被重定向到不存在的页面,因为我认为我没有通过一些保护测试。

我一直在寻找我的答案,我发现只有两个有用的链接:

Link 1

Link 2

但我还是想不通。对我有帮助吗?

【问题讨论】:

那么您不应该以编程方式读取网址。 如果他们不希望您以站点方式访问该站点,您不应该这样做吗? curl: can't fetch rss from website because of CloudFlare的可能重复 【参考方案1】:

那就是 CloudFlare 的我处于攻击模式 --> http://blog.cloudflare.com/introducing-im-under-attack-mode

如果您是该网站的所有者,则应将您自己的 IP 地址列入白名单。如果您是该网站的访问者

1.) 网站所有者在他们自己的网站上启用了该功能,在这种情况下这是故意的,因为他们正在保护自己的网站或

2.) 您过于频繁地加载网站 - 并且您正在触发 CloudFlare 的 DDOS 保护。

附言免责声明:我为 CloudFlare 工作。

【讨论】:

您好,当您为 CloudFlare 工作时,我想告诉您这是一种绕过“内容保护”的方法。:1. 使用 Curl 加载页面,2. 将其传递给 Selenium,将浏览器设置为 Chrome。 3. 加载带有先前 cookie 的页面,等待 5 秒,然后打印出其内容。简单:)【参考方案2】:

您可以通过在任何主要浏览器的开发人员工具下的网络部分中选择“复制为 cUrl”来绕过攻击中模式。

这会复制所有必需的 cookie,以便您的 curl 可以“验证”。我认为这些 cookie 的持续时间取决于 cloudflare。

旁注:curl 必须在与您加载站点时使用的 IP 相同的 IP 上运行。 对于任何真正的测试/开发环境,我建议使用selenium 和/或phantomjs,它们是用于网站测试的更好且易于编写脚本的语言。

curl 'https://ilikeurls.net/ourpage.php?do=command' \
    -H 'Host: ilikeurls.net' \
    -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0' \
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -H 'Accept-Language: en-US,en;q=0.5' \
    -H 'Referer: https://ilikeurls.net/outpage.php' \                                                    
    -H 'Cookie: all required cookies will appear here' \
    -H 'Connection: keep-alive'\
    --compressed

虽然您最好使用 selenium 或 phantomjs 编写这些测试的脚本。

【讨论】:

实际上,不要做 -H 'Accept-Encoding: gzip, deflate' - 做 --compressed - 这将使 curl 发送相同的标头,以及 curl 编译时使用的所有压缩方案 - 通常归结为 gzip,deflate - curl 也会自动为您解压缩,保持可读性和可解析性,并保持压缩提供的速度改进:) 这个技巧从今天起不起作用,cloudflare 返回验证码页面。 @pts 可以确认,它不再工作了,即使使用 cookie。【参考方案3】:

您可以尝试调整您的机器人设置或找到将 CURL 列入白名单的方法。

在我在 Firewall > Bot 中调整 Cloudflare 设置后,我的所有 curl 请求都开始返回 403 错误。所有人都被允许;我将自动设置为阻止并可能自动设置为挑战,它破坏了 CURL。

【讨论】:

以上是关于cURL - 加载具有 CloudFlare 保护的站点的主要内容,如果未能解决你的问题,请参考以下文章

curl:由于 CloudFlare,无法从网站获取 RSS

使用 CloudFlare 时使用真实服务器 IP 的 cURL

php curl 使用 cloudflare 2021 访问网站

可以使用 Cloudflare 缓存和保护 REST API 吗?

如何使用 php 或 javascript 绕过 Cloudflare

如何绕过 Selenium 中的 Cloudflare bot 保护