有些资源站,新闻站等,当我们需要爬取它数据的时候他是有反爬取机制的,通过PHP去抓数据的时候,数据一层不变,而实际上他是动态改变的,一般是 token
或者是cookie
验证,不知道为什么他们要这么做,因为这些手段在PHP面前显得多么苍白无力。
Cookie 验证解决办法
1 2 3 4 5 6 7 8 9
| <?php $cookie_file = dirname(__FILE__).'/cookie.txt';
$url = "url"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch);
|
这样我们就事先模拟了该URL的访问,并将他的Cookie存放到了文件里面,下次再请求数据的时候,直接取文件里面的cookie跟着请求送过去就OK了。一般将此文件定时执行,因为cookie有生命周期。
Curl请求数据方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $memeda = file("cookie.txt")[4]; $cook = substr($memeda,46); $url ="url"; $ch = curl_init(); $cookie = "id=".$cook; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch); curl_close($ch); echo $output;
|