![1c925b5c19c88a8cc3987d876a202164.png](https://img-blog.csdnimg.cn/img_convert/1c925b5c19c88a8cc3987d876a202164.png)
在api采集过程中,有的接口你不传cookie 无法让你访问接口。那么我们需要在传cookie的地方把cookie带进去。
cookie 的来源,比如一次访问,或者一次登录。响应时服务器就给你生成好了。
curl 方式:
// 初始化CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // 获取头部信息 curl_setopt($ch, CURLOPT_HEADER, 1); // 返回原生的(Raw)输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行并获取返回结果 $content = curl_exec($ch); // 关闭CURL curl_close($ch); // 解析HTTP数据流 list($header, $body) = explode("", $content); // 解析COOKIE preg_match("/set-cookie:([^]*)/i", $header, $matches); // 后面用CURL提交的时候可以直接使用 // curl_setopt($ch, CURLOPT_COOKIE, $cookie); $cookie = $matches[1];// 初始化CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url2); // 获取头部信息 curl_setopt($ch, CURLOPT_HEADER, 1); // 返回原生的(Raw)输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIE, $cookie);//设置cookie// 执行并获取返回结果 $content = curl_exec($ch); // 关闭CURL curl_close($ch);
guzzle-http
try { $client = new GuzzleHttpClient(); $jar = new GuzzleHttpCookieCookieJar(); $response = $client->request('GET', $url, ['cookies'=>&$jar]);} catch (Exception $e) {return '获取cookie失败';}try { $response = $client->request('GET', $url2, [ 'query' =>$query, 'cookies' => $jar, ]); $content = $response->getBody()->getContents();} catch (Exception $e) { return '更新失败';}
只需要借用& 引用 就可以在第一次请求时拿到cookie 后再传入下个cookie就好。