php Guzzle 携带cookie请求

今天看媳妇在工作,从一个系统导入到另外一个系统数据,一次一次的操作很麻烦,干脆想用php写一个脚本来爬取数据,然后通过模拟提交实现数据的转移。

之前很早的时候一直在用php-curl包,最近看到Guzzle http client 比较火,打算体验一下。

安装方法使用composer进行安装:

composer require guzzlehttp/guzzle

我使用的是Guzzle 6,最新版的。下面是官方文档,英文能力不错的可以看一下。

http://docs.guzzlephp.org/en/stable/

但是官方针对cookie这一处的描述比较少,只有下面的一些介绍,大家可以看看。

http://docs.guzzlephp.org/en/stable/request-options.html#cookies

文档的意思是需要实例化一个GuzzleHttp\Cookie\CookieJarInterface 类,这样才能进行传递。

但是具体的示例没有相关的介绍,今天我整理了下一些相关的使用方法,代码如下。

携带cookie进行请求:

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$cookieJar = CookieJar::fromArray([
            'PHPSESSID' => 'b68212de1826c64d77b69dc514c2a9cb'
        ], 'www.devkang.com');  // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。

$client = new Client([
            'cookies' => $cookieJar,
          ]);
$result = $client->get('http://www.devkang.com/');

print_r($result->getBody()->getContents());

下面的也可以达到一样的效果。

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$cookieJar = CookieJar::fromArray([
            'PHPSESSID' => 'b68212de1826c64d77b69dc514c2a9cb'
        ], 'www.devkang.com');  // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。

$client = new Client();
$result = $client->get('http://www.devkang.com/', [
           'cookies' => $cookieJar,
          ]);

print_r($result->getBody()->getContents());

这个时候你可以携带cookie请求需要的数据了。

花了2个小时候的时间终于把媳妇的系统数据全部写完,以后只要执行下console命令,数据就会自动导入,解放了媳妇双手。科技改变未来,此话不假。

媳妇给奖励今晚吃的好吃的!

本文已经被查看929次

发表评论

电子邮件地址不会被公开。 必填项已用*标注