MENU

偷数据遇到的坑

June 19, 2019 • Read: 140 • Web Program

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

Cookie 验证解决办法

<?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请求数据方法

$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;
Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

已有 1 条评论
  1. 奶爸de笔记 奶爸de笔记     Windows 10 /    Google Chrome

    爬大姐姐