php guzzle模拟登录,获取phpsessionid,并爬取登录之后的内容

版权声明:廖圣平博客,未经博主允许不得转载。企鹅:1194008361 https://blog.csdn.net/qq_22823581/article/details/87707655

1.登录:

本篇文章依赖第三方包:Guzzle

composer require guzzlehttp/guzzle

模拟登录代码:获取session。

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;
    public function post(){
        $client = new \GuzzleHttp\Client();
        $res = $client->request("POST", "https://www.demo.com/user.php?act=logincheck", [
            'headers' => [
                'Content-Type'=>'application/x-www-form-urlencoded',
                'Content-Length'=>96,
            ],
            'form_params'=>[
                "username" => 'demo',
                "password" => 'demo',
            ],
        ]);
        $header = $res->getHeaders();
        $a = $header['Set-Cookie'][0];
        dump($a);exit;
    }

在上端代码中,获取了session值,$a 可以保存在缓存中,获取数据库中。

如何使用session去请求其他地址:

    public function get(){
        $url = 'https://www.demo.com/view/0073289a6cd4.html';
        $cookieJar = CookieJar::fromArray([
            'PHPSESSID' => 'lp4gc523pdromhlhqq3fokou62'//这边的session值,是上面获取的$a 的值,可能需要切割整理数据,你把上面的打印即可查看到值。
        ], 'www.demo.com');  // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。

        $client = new Client([
            'cookies' => $cookieJar,
        ]);
        $result = $client->get($url);

       $data =$result->getBody()->getContents();
        dump($data);
    }

即可爬取需要登录的内容了

如何模拟登录有验证码的系统?

Guzzle 实现模拟登陆,抓取数据 (某网盘为例)

没有更多推荐了,返回首页