下面是自定义的post方法:
function post($url,$post_data,$location = 0,$reffer = null,$origin = null,$host = null){
$header = array( //头部信息,上面的函数已说明
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Encoding: gzip, deflate',
'Accept-Language: zh-CN,zh;q=0.9',
'Connection: keep-alive',
'Content-Length: 779',
'Content-Type: application/x-www-form-urlencoded',
'Cookie: 这个header信息可以直接复制网址上的',
'Host: www.taokouling.com',
'Origin: http://www.taokouling.com',
'Referer: http://www.taokouling.com/index/taobao_ehylj/',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'X-Requested-With: XMLHttpRequest',
);
$curl = curl_init(); //这里并没有带参数初始化
curl_setopt($curl, CURLOPT_URL, $url);//这里传入url
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);//对认证证书来源的检查,不开启次功能
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);//从证书中检测 SSL 加密算法
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36");
//模拟用户使用的浏览器,自己设置,我的是"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);//自动设置referer
curl_setopt($curl, CURLOPT_POST, 1);//开启post
curl_setopt($curl, CURLOPT_ENCODING, "gzip, deflate" );
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);//要传送的数据
curl_setopt($curl, CURLOPT_COOKIE, "cookie来源于浏览器复制");//以变量形式发送cookie
curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时限制,防止死循环
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
return $tmpInfo;
}
PS:header里面的cookie需要在你想请求的网页上获取。获取方式如下:
这里面复制完整的cookie信息,替换到上面的post方法,这个你们可以改进,我只是实现了这个东西。