目录
  1. 1. Cookie 验证解决办法
  2. 2. Curl请求数据方法
偷数据遇到的坑

有些资源站,新闻站等,当我们需要爬取它数据的时候他是有反爬取机制的,通过PHP去抓数据的时候,数据一层不变,而实际上他是动态改变的,一般是 token 或者是cookie 验证,不知道为什么他们要这么做,因为这些手段在PHP面前显得多么苍白无力。

1
2
3
4
5
6
7
8
9
<?php
$cookie_file = dirname(__FILE__).'/cookie.txt'; //定义cookie存放位置 手动创建该文件
//先获取cookies并保存
$url = "url";
$ch = curl_init($url); //初始化
curl_setopt($ch, CURLOPT_HEADER, 0); //不返回header部分
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而非直接输出
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //存储cookies
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();
//设置选项,包括URL
$cookie = "id=".$cook;//拼接拿到的cookie
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);//带cookie发数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
echo $output;
文章作者: 肖虎威
文章链接: https://xiaohuwei.github.io/2019/11/01/%E5%81%B7%E6%95%B0%E6%8D%AE%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 肖虎威博客

评论