数据载入中,请稍后......
 
展开
懒人码库客户端 点击或扫描下载
欢迎来到懒人码库!懒人码库QQ群:19651313
欢迎来到懒人码库!懒人码库QQ群:19651313  
当前位置:懒人码库 > 服务端脚本 > PHP

curl模拟登陆微信公众平台以及群发微信

2013-07-14 23:57 来源:www.lanrenmaku.com / 作者:懒人 已被阅读:次 分类:PHP 上一篇:curl模拟登陆微信公众平台 下一篇:PHP网站301重定向方法详解

weixinFunc.php
 



<?
function init($user,$password){ //初始化,登陆微信平台
 global $cookie_file;
 $url = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
 $fields = array('username' => $user, 'pwd' => md5($password), 'imgcode' => '', 'verify' => '', 'f' => 'json');

 $cookie_file = dirname(__FILE__)."/cookie.txt"; // 用来存放cookie的文件

 $ch = curl_init(); // 启动一个CURL会话

 curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查,0表示阻止对证书的合法性的检查。

 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在

 //模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

 // 发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
 curl_setopt($ch, CURLOPT_POST, 1);

 //要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

 //连接关闭以后,存放cookie信息的文件名称
 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

 // 包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

 // 获取的信息以文件流的形式返回,而不是直接输出。
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

 $result = curl_exec($ch); // 执行操作

 if ($result == NULL) {
  echo "Error:";
  echo curl_errno($ch) . " – " . curl_error($ch) . "";
 }
 curl_close($ch); // 关闭CURL会话
 $result=json_decode($result,true);
 $result=$result['ErrMsg'];
 preg_match_all('/token=(\d+)/s',$result,$matches);
 $result=$matches[1][0];
 return $result;
}

 

function weixinpost($tofakeid,$content){
 global $result,$cookie_file;
 $url2 = "https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN";
 $post_data = array("tofakeid" => $tofakeid,"type" => "1","content" => $content,"token" => $result,"ajax" => "1","error" => "false");
 $ch2 = curl_init();
 curl_setopt($ch2, CURLOPT_URL, $url2);
 curl_setopt($ch2, CURLOPT_REFERER, 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?t=wxm-singlechat&lang=zh_CN');
 //curl_setopt($ch2, CURLOPT_REFERER, 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token='.$result.'&fromfakeid='.$tofakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN');//模拟来源
 curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);  //时候将获取数据返回
 // 我们在POST数据哦!
 curl_setopt($ch2, CURLOPT_POST, 1); //设置为POST传输
 // 把post的变量加上
 curl_setopt($ch2, CURLOPT_POSTFIELDS, $post_data); //post过去数据
 curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_file);    //读取cookie
 curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);

 $output = curl_exec($ch2);
 if($output === false){  //判断错误
  echo curl_error($ch2);
 }
 $info = curl_getinfo($ch2);  //能够在cURL执行后获取这一请求的有关信息
 curl_close($ch2);
 print_r ($output.'<br>');
}
?>

 

weixindenglu.php


<?
require_once('weixinFunc.php');
$user='service-jd@jssdw.com';
$password='******';
$result=init($user,$password);
//echo ($result);
// 开始群发微信

$ch2 = curl_init();

curl_setopt($ch2, CURLOPT_URL, 'https://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&token='.$result.'&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0');

curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_file);    //读取cookie
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);

$data = curl_exec($ch2);
//print_r ($data);
curl_close($ch2);

preg_match_all('/fakeId\" : \"(\d+)\"/s',$data,$matches);//带引号
//print_r ($matches);
$new_arr=array_unique($matches[1]);//去除数组中重复的值
foreach($new_arr as $key){
 //echo $key."</br>";
 weixinpost($key,"测试微信公众平台群发信息到用户功能!!!");
}


?> 

 

 

weixinpost.php


<?
require_once('weixinFunc.php');

$url = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
//$fields = "username=71512398&pwd=**********************&imgcode=&verify=&f=json";
$fields = array('username' => '71512398', 'pwd' => '***********************************', 'imgcode' => '', 'verify' => '', 'f' => 'json');

 


// 用来存放cookie的文件
$cookie_file = dirname(__FILE__)."/cookie.txt";


// 启动一个CURL会话
$ch = curl_init();

// 要访问的地址
curl_setopt($ch, CURLOPT_URL, $url);

// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

// 发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POST, 1);

//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

//连接关闭以后,存放cookie信息的文件名称
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

// 包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

// 设置curl允许执行的最长秒数
//curl_setopt($ch, CURLOPT_TIMEOUT, 6);

// 获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

// 执行操作
$result = curl_exec($ch);
//print_r ($result);

if ($result == NULL) {
 echo "Error:";
 echo curl_errno($ch) . " – " . curl_error($ch) . "";}

 // 关闭CURL会话
 curl_close($ch);
 //echo ($result);
 $result=json_decode($result,true);
 //print_r ($result);
 $result=$result['ErrMsg'];
 preg_match_all('/token=(\d+)/s',$result,$matches);

 $result=$matches[1][0];

 

 $ch2 = curl_init();

 curl_setopt($ch2, CURLOPT_URL, 'https://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&token='.$result.'&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0');

 curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_file);    //读取cookie
 curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);

 $data = curl_exec($ch2);
 //print_r ($data);
 curl_close($ch2);

 preg_match_all('/fakeId\" : \"(\d+)\"/s',$data,$matches);//带引号
 //print_r ($matches);
 $new_arr=array_unique($matches[1]);//去除数组中重复的值
 //foreach($new_arr as $key){
  //echo $key."</br>";
  weixinpost('937814962',"测试微信公众平台群发信息到用户功能!!!");
 //}

?>

小贴士:懒人码库 为网页前端人员提供建站常用的广告代码和网页特效,内容涵盖焦点图,导航菜单,jQuery代码,图片特效,对联广告,日历控件,在线客服等。