这几天碰到这样一个需求,就想到了用curl模拟登入,之前没用过curl干模拟登入的事,现在遇到了,就想一定要掌握把curl学会,过程花了我2天时间,虽然我干了一年php了,解决这个问题真的花了我2天时间,也许看别人的文章的时候别人说什么多轻松之类的,自己摸索还是感觉有点费劲的。

//模拟微信登入
$cookie_file = tempnam('./temp','cookie');
$login_url = 'https://mp.weixin.qq.com/cgi-bin/login';
$data = 'f=json&imgcode=&pwd=ae4e792c8c289cc8e390c86c99ea249b&username=97653723@qq.com';
$ch = curl_init($login_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_REFERER,'https://mp.weixin.qq.com');
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$content = curl_exec($ch);
curl_close($ch);
$newurl = json_decode($content,1);
$newurl = $newurl['redirect_url'];

//获取登入后页面的源码
$go_url = 'https://mp.weixin.qq.com'.$newurl;

$ch = curl_init($go_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec($ch);
//var_dump(curl_error($ch));
print_r($content);
curl_close($ch);