(转载)微信公众平台 - 实例(未验证)

news/2023/12/9 9:13:58
如何部署自己的公众平台:
    1.打开http://mp.weixin.qq.com 注册/登录
    2.进入高级功能菜单,选择编辑模式或开发者模式(本例子属于开发者模式-需要自己拥有服务器)
    3.进入开发者模式,注册成为开发者,配置接口信息。如:
        URL:http://192.168.1.1/wx_sample.php
        Token:weixin (自己填写一个)
    4.打开wx_sample.php    $wechatObj->valid(); 这个方法进行验证
    5.验证成功,关闭wx_sample.php    $wechatObj->valid();
    6.马上使用手机,访问属于自己的公众平台吧


本例代码测试方法:
    1.打开手机微信
    2.关注公众账号:****
3.发送一条信息:q北京遇上西雅图
    4.返回一条磁力链接
    5.系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看

原理:

    1.接收用户数据,如:q北京遇上西雅图

    2.到bt搜索引擎进行查询数据

    3.返回一条磁力链接

    ps:由于没有申请到内测资格,有很多功能都受到限制,如:5秒超时解决不了,

    无法主动推送,批量推送,模拟登录又不方便等等。。。

[PHP]代码

001<?php
002/**
003  * wechat php test
004  */
005header('Content-Type:text/html;charset=utf8');
006date_default_timezone_set('RPC');
007  
008//define your token
009define("TOKEN", "2snH21PBqF7UK");//自定义
010$wechatObj = new wechatCallbackapiTest();
011//$wechatObj->valid();//第一次验证token时使用
012$wechatObj->responseMsg();
013  
014class wechatCallbackapiTest
015{
016    private $keyword;
017      
018    public function valid()
019    {
020        $echoStr = $_GET["echostr"];
021  
022        //valid signature , option
023        if($this->checkSignature()){
024            echo $echoStr;
025            exit;
026        }
027    }
028      
029    public function responseMsg()
030    {
031        //get post data, May be due to the different environments
032        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
033  
034        //extract post data
035        if (!empty($postStr)){
036                  
037                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
038                $fromUsername = $postObj->FromUserName;
039                $toUsername = $postObj->ToUserName;
040                $this->keyword = trim($postObj->Content);
041                $time = time();
042                $textTpl = "<xml>
043                            <ToUserName><![CDATA[%s]]></ToUserName>
044                            <FromUserName><![CDATA[%s]]></FromUserName>
045                            <CreateTime>%s</CreateTime>
046                            <MsgType><![CDATA[%s]]></MsgType>
047                            <Content><![CDATA[%s]]></Content>
048                            <FuncFlag>0</FuncFlag>
049                            </xml>";             
050                if(!empty( $this->keyword ))
051                {
052                    if($this->keyword == 999){
053                        $msgType = "text";
054                        $contentStr = '当您搜索:q北京遇上西雅图,系统返回的是迅雷磁力链接,请您使用电脑版迅雷或手机版迅雷,进行下载观看。';//'参数:1, 按下载数查询;参数:2, 按时间查询;参数:5, 按质量查询; 精确查询请添加双引号; 例如: q"北京遇上西雅图"  1';
055                        echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
056                        exit;
057                    }
058                    preg_match('#^q(.*)#', $this->keyword, $str);
059                    if($str[1]){
060                        $data = $this->getQueryParam($str[1]);
061                        $contents = $this->getQueryList($data);
062                        $resutl = $this->getQueryResult($contents);
063                        $link = str_replace('&amp;','&',urldecode($resutl[1]));//组装磁力链接
064                        if($link){
065                            $msgType = "text";
066                            $contentStr = $link;
067                            echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
068                        }
069                    }else{
070                        $msgType = "text";
071                        $contentStr = '请您输入q进行查询,例如: q北京遇上西雅图     更多帮助请输入999';
072                        echo $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
073                    }
074                }else{
075                    echo "Input something...";
076                }
077  
078        }else {
079            echo "";
080            exit;
081        }
082          
083    }
084          
085    private function checkSignature()
086    {
087        $signature = $_GET["signature"];
088        $timestamp = $_GET["timestamp"];
089        $nonce = $_GET["nonce"];    
090                  
091        $token = TOKEN;
092        $tmpArr = array($token, $timestamp, $nonce);
093        sort($tmpArr);
094        $tmpStr = implode( $tmpArr );
095        $tmpStr = sha1( $tmpStr );
096          
097        if( $tmpStr == $signature ){
098            return true;
099        }else{
100            return false;
101        }
102    }
103      
104    //返回q=查询
105    function getQueryResult($contents){
106        $result = array();
107        preg_match('#<a onclick="fclck\(this.href\)" href="(.*)" title="Download via magnet-link">\[magnet-link\]</a>#iUs', $contents, $content);
108        $result = $content;
109        return $result;
110    }
111      
112      
113    //获取btdigg.org 的查询数据
114    function getQueryList($data){
115        $data['order'] = $data['order'] ? $data['order'] : 0;
116        $data['p'] = 0;
117        $ch = curl_init();
118  
119        curl_setopt($ch, CURLOPT_URL, 'https://btdigg.org/search?'.http_build_query($data));
120        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
121        curl_setopt($ch, CURLOPT_USERAGENT, 'Google Bot');
122        curl_setopt($ch, CURLOPT_TIMEOUT, 4);
123        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
124        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
125          
126        $result = curl_exec($ch);
127        curl_close($ch);
128        return $result;
129    }
130  
131    //获取查询参数
132    function getQueryParam($str){
133        $data = array();
134        $string = explode(' ', $str);
135          
136        //是数组 and 最后一个数组是数字
137        $last = array_pop($string);
138        if(is_numeric($last)){
139            $data['q'] = implode(' ', $string);
140            $data['order'] = $last;
141        }else{
142            $data['q'] = $str;
143        }
144        return $data;
145    }
146      
147}
148  
149?>



http://www.ppmy.cn/news/697153.html

相关文章

p2p传输

实现思路&#xff1a; 1、稳定快速&#xff1a;大文件的分发的稳定性受限于传输网络&#xff0c;受限于传输协议。我们的分发网络建立在公司专用GPN之上&#xff0c;传输网络的稳定性得到保证&#xff0c;传输协议采用的 P2P传输&#xff0c;很明显优于 FTP等相关协议。 这里其…

教你找电影

几年前当我还是一个小白的时候&#xff0c;在网上常常会看到一些教人找电影的攻略&#xff0c;他们推荐的无非是电影天堂、电影FM、人人影视这些烂大街的网站。而实际上&#xff0c;这些网站明显无法满足任何一位影迷的需求。这几年我好不容易脱离小白阶段&#xff0c;并且做资…

《HelloGitHub》第 13 期

公告 本期推荐的项目到达了 30 个&#xff0c;里面少不了对本项目支持的小伙伴们的推荐&#xff0c;再次感谢大家。 本次排版尝试&#xff1a;根据分类项目名排序&#xff0c;为了让大家方便查阅。如果有任何建议和意见欢迎留言讨论 临近 5.1 假期&#xff0c;所以提前几天发刊…

Btspread Search Assistant的开发过程

-————————————————2016年3月1日更新———————————————— 现在btspread已经不能用了,哥准备换掉神器里面的btspread搜索方法,换上btdigg和torrentkitty的搜索函数,大家敬请期待. ————————————————2016年1月30日更新——————…

授人以鱼:教你找电影

年前当我还是一个小白的时候&#xff0c;在网上常常会看到一些教人找电影的攻略&#xff0c;他们推荐的无非是电影天堂、电影FM、人人影视这些烂大街的网站。而实际上&#xff0c;这些网站明显无法满足任何一位影迷的需求。这几年我好不容易脱离小白阶段&#xff0c;并且做资源…

P2P--大文件分发网络的搭建

六月份去上海参加了DockOne组织的容器大会&#xff0c;报了一个小项目&#xff0c;不小心得了一等奖&#xff0c;这里拿出来跟大家共享一下其中核心的P2P传输网络的搭建&#xff0c;也是公司已经投入使用的大文件传输方式。 项目设计&#xff1a; 初衷&#xff1a; 1、作为一个…

[Linux]关于Transmission下载服务器的搭建与配置

1. Transmission简介 Transmission是一个强大的BT工具&#xff0c;懂的自然懂哈。目前官网发布了多个版本可供下载使用&#xff0c;包括&#xff1a;Mac、GTK、QT版本&#xff0c;还有Daemon版本。 Transmission支持DHT、Magnet Link、uTP以及PEX等特性。尤其是支持Magnet Link…

数据采集

复杂HTML解析 一&#xff0c;三思而后行 面对页面解析的时候&#xff0c;不假思索的直接写几行语句来抽取信息是非常直接的做饭&#xff0c;但是像这样鲁莽放纵的做法是非常不可取的&#xff0c;只会让程序变得难以调试和脆弱。 那我们应该怎么做呢&#xff1f; 寻找打印此…

致那些徘徊在测试界的屌丝——也致给我自己这个苦逼屌丝

百度搜索&#xff1a;小强测试品牌 挨踢脱口秀&#xff0c;将技术娱乐化&#xff0c;碎片系统化&#xff0c;尽在荔枝FM&#xff08;http://www.lizhi.fm/200893&#xff09; 前言 久而久之&#xff0c;日渐麻痹&#xff0c;但为了进步还得迫使自己思考&#xff0c;于是乎写下此…

DHT网站收集

http://btdigg.org/ http://bt.shousibaocai.com/ 资料 Kademlia http://zh.wikipedia.org/wiki/Kademlia Distributed hash table http://en.wikipedia.org/wiki/Distributed_hash_table 如何"养"一只DHT爬虫 http://www.cnblogs.com/52web/p/How-to-write-…

python爬虫——对爬到的数据进行清洗的一些姿势(5)

做爬虫&#xff0c;当然就要用数据。想拿数据进行分析&#xff0c;首先清洗数据。这个清洗数据包括清除无用数据列和维度&#xff0c;删除相同数据&#xff0c;对数据进行勘误之类的。 从各大不同新闻网站可以爬到重复新闻。。。这个可以有。之前为了对爬到的新闻信息进行深度挖…

Ubuntu下关于Transmission daemon的安装与配置

原文链接&#xff1a;http://cliang.info/?p19 1. Transmission介绍 Transmission是一个强大的BitTorrent开源客户端&#xff0c;实现了BT协议中描述的大多数功能。目前&#xff0c;在它的官方网站上提供了多个版本可以下载&#xff0c;包括&#xff1a;Mac、GTK、QT版本&…

【Golang | runtime】runtime.Caller和runtime.Callers的使用和区别

环境&#xff1a; go version go1.18.2 1、runtime.Caller 函数func runtime.Caller(skip int) (pc uintptr, file string, line int, ok bool) 作用 获取函数Caller的调用信息 参数 skip: 0时&#xff0c;返回调用Caller的函数A的pc(program counter)、所在文件名以及Cal…

【Kafka面试题1】Kafka消费者是pull(拉)还是push(推)模式,这种模式有什么好处?

Kafka消费者是pull(拉)还是push(推)模式&#xff0c;这种模式有什么好处&#xff1f; 一、概述回答 Kafka中的Producer和consumer采用的是push-and-pull模式&#xff0c;即Producer只管向broker push消息&#xff0c;consumer只管从broker pull消息&#xff0c;两者对消息的生…

[AHK]调用小米笔记本电脑的音量调节功能

仅记录下小米笔记本电脑Fn键的探索 模拟发送FnF1、FnF2、FnF3&#xff0c;调用小米笔记本电脑的音量调节功能 1::Send {SC120} ;小米电脑 静音 FNF1的功能。 2::Send {SC12E} ;小米电脑 减少音量 FNF2的功能。 3::Send {SC130} ;小米电脑 增加音量 FNF3的功能。 以下也是A…

虎牙Js独轮车弹幕

虎牙Js独轮车弹幕 进入直播间后按F12 在console输入以下代码&#xff0c;回车即可&#xff1a; var x 1; const btn document.getElementById(msg_send_bt) function dulunche(){document.getElementById(pub_msg_input).value 福州歪嘴臭狗 ;btn.setAttribute(class, btn…

腾讯或推动斗鱼虎牙合并;拼多多推出“百亿补贴节”;Electron 9.2.0 发布| 极客头条

快来收听极客头条音频版吧&#xff0c;智能播报由出门问问「魔音工坊」提供技术支持。 「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 国内要闻 …

虎牙发布直播行业首个技术开放平台 三年十亿打造开放生态

2019年11月7日&#xff0c;虎牙在广州举办以“开放、连接、预见”为主题的“虎牙LiveTech大会”。会上&#xff0c;虎牙发布了两项在直播行业具有里程碑意义的技术成果&#xff1a;首个小程序开放平台和首个虚实结合开放平台HERO。虎牙CEO董荣杰在大会上表示&#xff1a;随着5G…

小米蓝牙遥控器键值

&#xfeff;&#xfeff; getevent得到的小米遥控的键值 add device 1: /dev/input/event3 name: "小米蓝牙遥控器"add device 2: /dev/input/event2 name: "gpio-keys.4"add device 3: /dev/input/event0 name: "HD Pro Webcam C92…

基于盲盒商城的飞机大战游戏

基于盲盒商城的飞机大战游戏 点击链接查看文档代码 一、首页 用户在首页可以选择开始游戏、查看最长生存时间、进入水果商城和退出游戏。 二、青铜游戏界面 在青铜游戏界面可以看到游戏当前得分&#xff0c;当前等级&#xff0c;以及属于青铜等级下的游戏背景和游戏规模。 三…
最新文章