PHP抓取一个网站,该网站正在使用cloudflare



我想从一个网站(不是我自己的(抓取一些特定的值(例如新闻文本(。

file_get_contents()不工作,可能被php.ini阻止。

所以我试着用旋度来做,问题是:
我得到的只是cloudflare的重定向文本
我的爬网程序应该执行以下操作:
转到页面->等待5秒cloudflare重定向->卷曲页面。

有什么想法在cloudfare等待时间后如何抓取页面吗?(PHP(

编辑:所以我尝试了很多东西,问题还是一样的
更具体的是:它只抓取cloudflare重定向页面。(所以我得到了一个重定向到主机的页面,cloudflare在前面。当我在localhost上卷曲时,它会占用localhost,所以重定向是obv不起作用的。("卷曲"5秒后,是否无法开始保存返回的数据?

"转到页面->等待5秒cloudflare重定向->卷曲页面。">

5秒的间隙页面实际上要求在访问者通过检查之前启用JavaScript和cookie,如果你使用爬网程序或机器人访问网站,这可能不会起作用。

您应该使用phantomjs

echo shell_exec('phantomjs example.js')

example.js

var page = require('webpage').create();
var url = 'http://www.google/';
page.open(url, function (status) {
  console.log(page.content)
  phantom.exit();
});

首先,您应该检查浏览器在该网站上的正常行为。什么是重定向和cookie。

然后,您需要设置curl脚本来收集"cookie jar"中的所有cookie,并自动跟踪重定向。

然后你应该做一些测试。

希望这能有所帮助。

注:

  • Cloudflare有很好的基础设施来阻止像你这样的人。他们可以做captcha挑战赛或类似的比赛。

  • 好的系统管理员迟早会发现你在做什么,并阻止你的IP或用户代理。

最新更新