2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php 模拟post带cookie php利用curl模拟post登录 传递cookie获取数据

php 模拟post带cookie php利用curl模拟post登录 传递cookie获取数据

时间:2019-01-05 12:31:19

相关推荐

php 模拟post带cookie php利用curl模拟post登录 传递cookie获取数据

一般我们会用curl抓取其他网站的数据,不过一些网站会设置成登录后才可以获取数据,这样一来我们就需要利用curl模拟登录保存cookie,并且传递cookie伪装和网站建立通信,获取到数据。

curl模拟post登录

/**

* 模拟post登录

* @param string $url 登录地址

* @param string $post 登录参数

* @param string $cookie cookie文件地址

* @return mixed

*/

function curl_login($url, $post, $cookie){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]

);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //提交方式为post,数据为json格式的。

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

$b = curl_exec($ch);

curl_close($ch);

return $b;

}

调用示例:

$cookie = '/login_cookie.txt';

//模拟登录

curl_login("/api/login", json_encode(['account' => 'xxx', 'password' => 'xxx']) ,$cookie);

获取cookie

/**

* 获取cookie

* @param string $url 登录地址

* @param string $cookie cookie文件地址

* @return mixed

*/

function curl_cookie($url, $cookie) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

$a = curl_exec($ch);

curl_close($ch);

return $a;

}

调用示例:

$cookie = '/login_cookie.txt';

//生成口令

curl_cookie("/api/login", $cookie);

模拟get获取数据

/**

* 模拟get获取数据

* @param $url

* @param $cookie

* @return mixed

*/

function curl_get($url, $cookie) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出

curl_setopt($ch, CURLOPT_REFERER, '/static/index.html');//来路模拟

//curl_setopt($ch, CURLOPT_HOST, '');

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

调用示例:

$cookie = '/login_cookie.txt';

//获取礼包

$content = json_decode(curl_get("/api/customermobile?customerMobile=".$mobile, $cookie), true);

模拟post获取数据

/**

模拟post获取数据

@param $url

@param $post

@param $cookie

@return mixed

*/

function curl_post($url, $post, $cookie) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出

curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //提交方式为post

curl_setopt($ch, CURLOPT_REFERER, '/static/index.html');//来路模拟

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

调用示例:

$cookie = '/login_cookie.txt';

//获取数据

$ressult = curl_post("/api/exchangecode/verifycode", json_encode($post), $cookie);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。