爬虫之请求头

爬虫解析接口时请求头是至关重要的一部分,部分笔记,如果还有其他实战接触到请求头会继续完善

前端 – token 是什么?为什么每次请求头(HEADS)里要携带它?

Token

token 是客户端频繁向服务器端请求数据,服务器频繁的去数据库查询用户名和密码进行对比,判断用户名和密码正确与否,并作出相应的提示,在这样的背景下,token 便应运而生了。

目的

token 的目的是为了减轻服务器的压力,减少频繁的查询数据库。

在前端请求后台的 API 接口的时候,为了安全性,一般需要再用户登录成功之后才能发送其他请求。

因此,在用户登录成功之后,后台会返回一个 token 给前端,这个时候我们就需要把 token 暂时保存在本地,每次发送请求的时候需要在 header 里边带上 token(无需再次带上请求名和密码),这个时候本地的 token 和后台数据库中的 token 进行一个验证,如果两者一致,则请求成功,否则失败。

用什么作为 Token 标识合适

一、使用设备号/设备mac地址作为token(推荐)

客户端:客户端在登录的时候获取设备的设备号串号 / mac 地址,并将其作为参数传递到服务器端。

服务器:服务器接收到该参数之后,使用一个变量接收同时将其作为 token 保存数据库,并将该 token 设置在 session 中,客户端每次请求的时候都要统一拦截,并将客户端传递的 token 和服务器 session 中的 token 对比,如果相同则放下,不同则拒绝。

优点:客户端不需要重新登录,只要登录一次后就能一直使用。

缺点:客户端需要带设备号/mac地址作为参数传递

curl get请求添加header头信息

function get($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTPGET, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。

    $header = ['User-Agent: php test']; //设置一个你的浏览器agent的header
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

    curl_setopt($ch, CURLOPT_HEADER, 1); //返回response头部信息
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header

    curl_setopt($ch, CURLOPT_URL, $url);
    $result = curl_exec($ch);

    echo curl_getinfo($ch, CURLINFO_HEADER_OUT); //官方文档描述是“发送请求的字符串”,其实就是请求的header。这个就是直接查看请求header,因为上面允许查看

    curl_close($ch);

    return $result;
}

Postman之模拟请求头

可以例用postman添加头部信息的方式成功请求

附附加一个扯淡联盟解析请求头视频接口

//扯淡联盟推荐带协程
    public function getvideoscdtj(){
        for ($i=100;$i>=1; $i--){
            co(function () use ($i) {
                $data=array();
                $url = "https://api.aichedan.com/api/v3/article/loadList?category=COMMEN";
                $header=["uuid:f0:0f:ec:8d:32:91"];
                $eq=$this->getapktj($url,$header);
                $res=$eq['data']['article'];
                if(!empty($res)){
                    foreach ($res as $re){
                        $r['title']=$re['textContent'];
                        $r['coverpath']=$re['jokeMediaList'][0]['coverUrl'];
                        $r['videopath']=$re['jokeMediaList'][0]['mediaUrl'];
                        $r['author']="扯淡联盟推荐";
                        $r['created_at']=time();
                        $data[]=$r;
                    }
                    $m=Db::table('videos')->insert($data);
                    
                }
                echo($i);
            });    
        }
        
    }
    //扯淡联盟颜值
    public function getvideoscdyz(){
        
        for ($i=100;$i>=1; $i--){
            
            $data=array();
            $url = "https://api.aichedan.com/api/v3/article/loadList?category=YANZHI";
            $header=["uuid:f0:0f:ec:8d:32:91"];
            $eq=$this->getapktj($url,$header);
            $res=$eq['data']['article'];
            if(!empty($res)){
                foreach ($res as $re){
                    $r['title']=$re['textContent'];
                    $r['coverpath']=$re['jokeMediaList'][0]['coverUrl'];
                    $r['videopath']=$re['jokeMediaList'][0]['mediaUrl'];
                    $r['author']="扯淡联盟";
                    $r['created_at']=time();
                    $data[]=$r;
                    
                }
                $m=Db::table('videos')->insert($data);
            }
           echo $i;
           
            
        }
        
    }


    //扯淡联盟关注用户的视频列表
   public function getusergzuid($sortId=""){
        static $data=array();
        $url = "https://api.aichedan.com/api/v3/follow/relation/follow/list?owerId=0eff350e-b49f-4dea-8590-c56da413e5f5&sortId=".$sortId;
        $header=["userId: 0eff350e-b49f-4dea-8590-c56da413e5f5","token: MGVmZjM1MGUtYjQ5Zi00ZGVhLTg1OTAtYzU2ZGE0MTNlNWY1"];
        $eq=$this->getapktj($url,$header);
        $data=$eq['data'];
        if(!empty($data)){
            
            foreach ($data as $da){
                $this->getvideosgzuser($da['userId']);
                $sortid=$da['sortId'];
            }
            $this->getusergzuid($sortid);
        }
        
        
    }
    public function getvideosgzuser($ownId){
        for ($i=100;$i>=1; $i--){
            $m=$i*10;
            $data=array();
            $url = "https://api.aichedan.com/api/v4/dynamics/article/list/new?owerId=".$ownId."&lastArticleId=&articlePageStart=".$m;
            $header=["userId: 0eff350e-b49f-4dea-8590-c56da413e5f5","token: MGVmZjM1MGUtYjQ5Zi00ZGVhLTg1OTAtYzU2ZGE0MTNlNWY1"];
            $eq=$this->getapktj($url,$header);
            $res=$eq['data']['dynamics'];
            if(!empty($res)){
                foreach ($res as $re){
                    $r['author']="扯淡联盟";
                    $r['title']=$re['article']['textContent'];
                    $r['coverpath']=$re['article']['jokeMediaList'][0]['coverUrl'];
                    $r['videopath']=$re['article']['jokeMediaList'][0]['mediaUrl'];
                    $r['created_at']=time();
                    $data[]=$r;
                }
                $m=Db::table('videos')->insert($data);
            }
            var_dump($i);
        }
        
    }
     //跨服务器高级用法
    public function getapktj($url,$header=[]){
    	 
		 $method ="GET";
		 $curl = curl_init();
         curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
		 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
		 curl_setopt($curl, CURLOPT_URL, $url);
		 curl_setopt($curl, CURLOPT_FAILONERROR, false);
		 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		 curl_setopt($curl, CURLOPT_HEADER, false);
	
		$ret = curl_exec($curl);
		$all=json_decode($ret,true);
    	return $all;
    }
//视频去重
    public function distinctvideo(){
		$sql="DELETE from videos WHERE (title) in (SELECT title from (SELECT title FROM videos where title!='' GROUP BY title HAVING COUNT(*)>1) s1) AND id NOT in (SELECT id from (SELECT id FROM videos GROUP BY title HAVING COUNT(*)>1) s2);";
		$mm=Db::delete($sql);
		return json_encode($mm);
	}

有数据就可以衍生出一个马甲网站:

http://zlhdsg.com/%e5%ad%a6%e4%b9%a0%e8%a1%8d%e7%94%9f%e5%93%81/%e7%88%ac%e8%99%ab%e5%b0%8f%e9%a9%ac%e7%94%b2-%e8%a7%86%e9%a2%91%e7%b1%bb/
0 评论
内联反馈
查看所有评论