国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php教程 PHP源碼 php簡(jiǎn)陋版實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息

php簡(jiǎn)陋版實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息

Nov 08, 2016 pm 05:33 PM

模擬登錄微信公共平臺(tái),實(shí)現(xiàn)主動(dòng)信息發(fā)送;

突破訂閱號(hào)一天只能發(fā)送一條信息的限制。

使用編碼UTF-8
代碼地址:https://github.com/itziy/wechat
使用方法:

$arr = array( 'account' => '公眾平臺(tái)帳號(hào)', 'password' => '密碼' );

$w = new Weixin($arr);

//$w->getAllUserInfo();//獲取所有用戶(hù)信息
$w->getUserInfo($groupid, $fakeid);//獲取單個(gè)用戶(hù)的信息,如果是默認(rèn)組,則$groupid傳0

$w->sendMessage('群發(fā)內(nèi)容'); //群發(fā)給所有用戶(hù)

$w->sendMessage('群發(fā)內(nèi)容',$userId);?//群發(fā)給特定用戶(hù),這里的userId是fakeid

本實(shí)例僅供參考,由此引發(fā)的法律風(fēng)險(xiǎn),本人概不負(fù)責(zé)。謝謝。

<?php
/*
調(diào)用方式簡(jiǎn)單說(shuō)明:
 $arr = array(
    &#39;account&#39; => &#39;公眾平臺(tái)帳號(hào)&#39;,
    &#39;password&#39; => &#39;密碼&#39;
);
$w = new Weixin($arr);
$w->getAllUserInfo();//獲取所有用戶(hù)信息
$w->getUserInfo($groupid, $fakeid);//獲取所有用戶(hù)信息,如果默認(rèn)分組,則$groupid傳0
$w->sendMessage(&#39;群發(fā)內(nèi)容&#39;); //群發(fā)給所有用戶(hù)
$w->sendMessage(&#39;群發(fā)內(nèi)容&#39;,$userId); //群發(fā)給特定用戶(hù),這里的$userId就是用戶(hù)的fakeid,數(shù)組方式傳遞
*/
class Weixin {
    public $userFakeid;//所有粉絲的fakeid
    private $_account;//用戶(hù)名
    private $_password;//密碼
    private $url;//請(qǐng)求的網(wǎng)址
    private $send_data;//提交的數(shù)據(jù)
    private $getHeader = 0;//是否顯示Header信息
    private $token;//公共帳號(hào)TOKEN
    private $host = &#39;mp.weixin.qq.com&#39;;//主機(jī)
    private $origin = &#39;https://mp.weixin.qq.com&#39;;
    private $referer;//引用地址
    private $cookie;
    private $pageSize = 100000;//每頁(yè)用戶(hù)數(shù)(用于讀取所有用戶(hù))
    private $userAgent = &#39;Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0&#39;;
     
     
    public function __construct($options){
        $this->_account = isset($options[&#39;account&#39;])?$options[&#39;account&#39;]:&#39;&#39;;
        $this->_password = isset($options[&#39;password&#39;])?$options[&#39;password&#39;]:&#39;&#39;;
        $this->login();
    }
     
    //登錄
    private function login(){
        $url = &#39;https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN&#39;;
        $this->send_data = array(
            &#39;username&#39; => $this->_account,
            &#39;pwd&#39; => md5($this->_password),
            &#39;f&#39; => &#39;json&#39;
        );
        $this->referer = "https://mp.weixin.qq.com/";
        $this->getHeader = 1;
        $result = explode("\n",$this->curlPost($url));
        foreach ($result as $key => $value) {
            $value = trim($value);
 
            if (preg_match(&#39;/token=(\d+)/i&#39;, $value,$match))
            {
                //獲取token
                $this->token = trim($match[1]);
            }
 
            if (preg_match(&#39;/"ret":(.*)/i&#39;, $value,$match)){//獲取token
                switch ($match[1]) {
                    case -1:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"系統(tǒng)錯(cuò)誤")));
                    case -2:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"帳號(hào)或密碼錯(cuò)誤")));
                    case -3:
                        die(urldecode(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>urlencode("密碼錯(cuò)誤")))));
                    case -4:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"不存在該帳戶(hù)")));
                    case -5:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"訪(fǎng)問(wèn)受限")));
                    case -6:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"需要輸入驗(yàn)證碼")));
                    case -7:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"此帳號(hào)已綁定私人微信號(hào),不可用于公眾平臺(tái)登錄")));
                    case -8:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"郵箱已存在")));
                    case -32:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"驗(yàn)證碼輸入錯(cuò)誤")));
                    case -200:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"因頻繁提交虛假資料,該帳號(hào)被拒絕登錄")));
                    case -94:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"請(qǐng)使用郵箱登陸")));
                    case 10:
                        die(json_encode(array(&#39;status&#39;=>1,&#39;errCode&#39;=>$match[1],&#39;msg&#39;=>"該公眾會(huì)議號(hào)已經(jīng)過(guò)期,無(wú)法再登錄使用")));
                    case 0:
                        $this->userFakeid = $this->getUserFakeid();
                        break;
                }
            }
            if(preg_match(&#39;/^set-cookie:[\s]+([^=]+)=([^;]+)/i&#39;, $value,$match)){//獲取cookie
                $this->cookie .=$match[1].&#39;=&#39;.$match[2].&#39;; &#39;;
            }
             
        }
    }
     
    //單發(fā)消息
    private function send($fakeid,$content){
        $url = &#39;https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN&#39;;
        $this->send_data = array(
                &#39;type&#39; => 1,
                &#39;f&#39; => &#39;json&#39;,
                &#39;action&#39; => &#39;sync&#39;,
                &#39;content&#39; => $content,
                &#39;tofakeid&#39; => $fakeid,
                &#39;token&#39; => $this->token,
                &#39;ajax&#39; => 1,
            );
        $this->referer = &#39;https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token=&#39;.$this->token.&#39;&fromfakeid=&#39;.$fakeid.&#39;&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN&#39;;
        return $this->curlPost($url);
    }
     
    //群發(fā)消息
    public function sendMessage($content=&#39;&#39;,$userId=&#39;&#39;) {
        if(is_array($userId) && !empty($userId)){
            foreach($userId as $v){
                $json = json_decode($this->send($v,$content));
                if($json->ret!=0){
                    $errUser[] = $v;
                }
            }
        }else{
            foreach($this->userFakeid as $v){
                $json = json_decode($this->send($v[&#39;fakeid&#39;],$content));
                if($json->ret!=0){
                    $errUser[] = $v[&#39;fakeid&#39;];
                }
            }
        }
         
        //共發(fā)送用戶(hù)數(shù)
        $count = count($this->userFakeid);
        //發(fā)送失敗用戶(hù)數(shù)
        $errCount = count($errUser);
        //發(fā)送成功用戶(hù)數(shù)
        $succeCount = $count-$errCount;
         
        $data = array(
            &#39;status&#39;=>0,
            &#39;count&#39;=>$count,
            &#39;succeCount&#39;=>$succeCount,
            &#39;errCount&#39;=>$errCount,
            &#39;errUser&#39;=>$errUser
        );
         
        return json_encode($data);
    }
    //獲取所有用戶(hù)信息
    public function getAllUserInfo(){
        foreach($this->userFakeid as $v){
            $info[] = $this->getUserInfo($v[&#39;groupid&#39;],$v[&#39;fakeid&#39;]);
        }
         
        return $info;
    }
     
     
     
    //獲取用戶(hù)信息
    public function getUserInfo($groupId,$fakeId){
        $url = "https://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_CN&fakeid={$fakeId}";
        $this->getHeader = 0;
        $this->referer = &#39;https://mp.weixin.qq.com/cgi-bin/contactmanagepage?token=&#39;.$this->token.&#39;&t=wxm-friend&lang=zh_CN&pagesize=&#39;.$this->pageSize.&#39;&pageidx=0&type=0&groupid=&#39;.$groupId;
        $this->send_data = array(
            &#39;token&#39;=>$this->token,
            &#39;ajax&#39;=>1
        );
        $message_opt = $this->curlPost($url);
        return $message_opt;
    }
     
    //獲取所有用戶(hù)fakeid
    private function getUserFakeid(){
        ini_set(&#39;max_execution_time&#39;,600);
        $pageSize = 1000000;
        $this->referer = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token={$this->token}";
        $url = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize={$pageSize}&pageidx=0&type=0&groupid=0&token={$this->token}&lang=zh_CN";
        $user = $this->vget($url);
        $preg = "/\"id\":(\d+),\"nick_name\"/";
        preg_match_all($preg,$user,$b);
        $i = 0;
        foreach($b[1] as $v)
        {
            $arr[$i][&#39;fakeid&#39;] = $v;
            $arr[$i][&#39;groupid&#39;] = 0;
            $i++;
        }
        return $arr;
    }
 
    /**
     * curl模擬登錄的post方法
     * @param $url request地址
     * @param $header 模擬headre頭信息
     * @return json
     */
    private function curlPost($url) {
        $header = array(
            &#39;Accept:*/*&#39;,
            &#39;Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3&#39;,
            &#39;Accept-Encoding:gzip,deflate,sdch&#39;,
            &#39;Accept-Language:zh-CN,zh;q=0.8&#39;,
            &#39;Connection:keep-alive&#39;,
            &#39;Host:&#39;.$this->host,
            &#39;Origin:&#39;.$this->origin,
            &#39;Referer:&#39;.$this->referer,
            &#39;X-Requested-With:XMLHttpRequest&#39;
        );
        $curl = curl_init(); //啟動(dòng)一個(gè)curl會(huì)話(huà)
        curl_setopt($curl, CURLOPT_URL, $url); //要訪(fǎng)問(wèn)的地址
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //設(shè)置HTTP頭字段的數(shù)組
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); //對(duì)認(rèn)證證書(shū)來(lái)源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); //從證書(shū)中檢查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, $this->useragent); //模擬用戶(hù)使用的瀏覽器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //使用自動(dòng)跳轉(zhuǎn)
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); //自動(dòng)設(shè)置Referer
        curl_setopt($curl, CURLOPT_POST, 1); //發(fā)送一個(gè)常規(guī)的Post請(qǐng)求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $this->send_data); //Post提交的數(shù)據(jù)包
        curl_setopt($curl, CURLOPT_COOKIE, $this->cookie); //讀取儲(chǔ)存的Cookie信息
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)限制防止死循環(huán)
        curl_setopt($curl, CURLOPT_HEADER, $this->getHeader); //顯示返回的Header區(qū)域內(nèi)容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //獲取的信息以文件流的形式返回
        $result = curl_exec($curl); //執(zhí)行一個(gè)curl會(huì)話(huà)
        curl_close($curl); //關(guān)閉curl
        return $result;
    }
     
    private function vget($url){ // 模擬獲取內(nèi)容函數(shù)
        $header = array(
                &#39;Accept: */*&#39;,
                &#39;Connection: keep-alive&#39;,
                &#39;Host: mp.weixin.qq.com&#39;,
                &#39;Referer: &#39;.$this->referer,
                &#39;X-Requested-With: XMLHttpRequest&#39;
        );
         
        $useragent = &#39;Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0&#39;;
        $curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話(huà)
        curl_setopt($curl, CURLOPT_URL, $url); // 要訪(fǎng)問(wèn)的地址
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //設(shè)置HTTP頭字段的數(shù)組
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對(duì)認(rèn)證證書(shū)來(lái)源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從證書(shū)中檢查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, $useragent); // 模擬用戶(hù)使用的瀏覽器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動(dòng)跳轉(zhuǎn)
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動(dòng)設(shè)置Referer
        curl_setopt($curl, CURLOPT_HTTPGET, 1); // 發(fā)送一個(gè)常規(guī)的GET請(qǐng)求
        curl_setopt($curl, CURLOPT_COOKIE, $this->cookie); // 讀取上面所儲(chǔ)存的Cookie信息
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設(shè)置超時(shí)限制防止死循環(huán)
        curl_setopt($curl, CURLOPT_HEADER, $this->getHeader); // 顯示返回的Header區(qū)域內(nèi)容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 執(zhí)行操作
        if (curl_errno($curl)) {
            // echo &#39;Errno&#39;.curl_error($curl);
        }
        curl_close($curl); // 關(guān)閉CURL會(huì)話(huà)
        return $tmpInfo; // 返回?cái)?shù)據(jù)
    }
}


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題