首页
友人帐
留言板
关于
Search
1
IDE Eval Resetter:JetBrains 全家桶无限试用插件
381 阅读
2
影视资源采集站收录大全
302 阅读
3
linux安装或升级protoc
224 阅读
4
VFM 3.7.5 源码 - 一个极简的 PHP 私人云盘!
161 阅读
5
批量采集美女写真等图片做图片站
149 阅读
谈天说地
程序源码
技术教程
成品源码
登录
Search
标签搜索
PHP
linux
源码
go
windows
centos
原创
mysql
微信
激活
采集
宝塔
绿色版
API
解析
SDK
图片
破解
域名
html
云青
累计撰写
150
篇文章
累计收到
78
条评论
首页
栏目
谈天说地
程序源码
技术教程
成品源码
页面
友人帐
留言板
关于
搜索到
2
篇与
的结果
2022-09-23
微信个人版扫码登入
微信个人版扫码登入此方法适用于个人开发者想使用微信扫码快速登入,但是又申请不了微信开放平台授权的个人用户,经测试此方法可用,demo下载地址在最底部获取uuidget方式请求以下接口会返回uuid信息// 地址 https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fweb.weixin.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_&_=1663918497103 // 结果 window.QRLogin.code = 200; window.QRLogin.uuid = "mmmmmmmmmm";组装获取qrcodehttps://login.weixin.qq.com/qrcode/{{第一步获取到的uuid}}轮询get访问获取微信返回信息https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid={{第一步获取到的uuid}}当用户扫码时会出现code 201,此时接口会返回base64图片window.code=201;window.userAvatar = 'data:img/jpg;......';当用户在手机上确定登入,则接口会返回code 200 并返回地址,此时模拟访问此地址并获取cookie信息// 返回信息 window.code=200; window.redirect_uri="https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A_mmmmmmmmmmmmmmmmmmmmmm@qrticket_0&uuid=mmmmmmmmmmmm&lang=zh_&scan=1661918912"; // 抓取到的cookie pac_uid=0_65cf11501295d; iip=0; pgv_pvid=8666222200; wxuin=1044427715; wxsid=1DTmzGGGDDDWSyuR; mm_lang=zh_; wxuin=1044427715; webwx_data_ticket=gSe4NFFFSDDSDSCC/kmhPNLO; webwxuvid=47a38a6FSDSCSCSCFGDGDGDGDGDGD1cd69355a523b64a548db8717f173d68ee1; webwx_auth_ticket=CIsBEJrPiGEDFDVERFDSFSGBDGFVSDFFCSDVDFSVGDSFCV7gxbszLyHqQCXa1sw0XMHM6sjVxfVWR/IIVn3jO97euZPMIT0jSDFVRFVGBRFBHGBHFSGSBSDGSDFGDFFSDDSFSDFDSFSDFTI=; MM_WX_NOTIFY_STATE=1; MM_WX_SOUND_STATE=1; wxloadtime=1663918937_expired; wxpluginkey=16633456778ps: 博主经过多次测试,发现只有wxuin是固定的,因此用wxuin代openid进行快速登入或注册同一账号短时间内请勿多次登入{cloud title="golang 测试Demo" type="default" url="https://uss.aaayun.cc/2022/09/20221025030654688.zip" password=""/}
2022年09月23日
18 阅读
0 评论
0 点赞
2019-04-18
PHP实现QQ扫码登入,非开放平台
近期有个需求,需要做扫码登入,而又不想去开放平台申请,看了一下彩虹大神的提取qq的sid,提取了几个重要的方法原理就是生成二维码后,前端设置定时器查看二维码状态,因为没有openid只能保存固定的值,那就是qq号了 // 生成二维码 public function getqrpic() { $url = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=1006102&e=2&l=M&s=4&d=72&v=4&t=0.5409099' . time() . 'daid=1&pt_3rd_aid=0'; $arr = $this->get_curl($url, 0, 0, 0, 1, 0, 0, 1); preg_match('/qrsig=(.*?);/', $arr['header'], $match); if ($qrsig = $match[1]) { Json::msg(0, 'success', ['qrsig' => $qrsig, 'data' => base64_encode($arr['body'])]); } else { Json::msg(1, '二维码获取失败'); } } // 获取二维码状态 public function qqlogin() { error_reporting(0); if (input('?get.qrsig')) { $qrsig = input('get.qrsig'); } else { Json::msg(400, 'qrsig不能为空'); } $sig = ''; $url = 'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fid.qq.com%2Findex.html&ptqrtoken=' . $this->getqrtoken($qrsig) . '&ptredirect=1&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-' . time() . '0000&js_ver=10291&js_type=1&login_sig=' . $sig . '&pt_uistyle=40&aid=1006102&daid=1&'; $ret = $this->get_curl($url, 0, $url, 'qrsig=' . $qrsig . '; ', 1); preg_match("/ptuiCB\('(.*?)'\)/", $ret, $ts_arr); $r = @explode("','", str_replace("', '", "','", $ts_arr[1])); if ($r[0] == 65) { Json::msg(205, '二维码已失效'); } elseif ($r[0] == 66) { Json::msg(202, '二维码未失效'); } elseif ($r[0] == 67) { Json::msg(204, '正在验证二维码'); } else { if (strpos($ret, '403')) Json::msg(306, $ret); } if (strlen($ret) > 1000) { $arr = explode(';', $ret); $data = substr($arr[17], strpos($arr[17], '=o') + 2, strlen($arr[17])); if (empty($data)) { Json::msg(400, '请切换二维码' . $ret); } $qq = ltrim($data, '0'); // $qq是qq号,下面写你接下来需要处理的语句 } } private function get_curl($url, $post = 0, $referer = 0, $cookie = 0, $header = 0, $ua = 0, $nobaody = 0, $split = 0) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); $httpheader[] = "Accept:*/*"; $httpheader[] = "Accept-Encoding:gzip,deflate,sdch"; $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8"; $httpheader[] = "Connection:close"; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if ($post) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } if ($header) { curl_setopt($ch, CURLOPT_HEADER, TRUE); } if ($cookie) { curl_setopt($ch, CURLOPT_COOKIE, $cookie); } if ($referer) { curl_setopt($ch, CURLOPT_REFERER, $referer); } if ($ua) { curl_setopt($ch, CURLOPT_USERAGENT, $ua); } else { curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36'); } if ($nobaody) { curl_setopt($ch, CURLOPT_NOBODY, 1); } curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); if ($split) { $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($ret, 0, $headerSize); $body = substr($ret, $headerSize); $ret = array(); $ret['header'] = $header; $ret['body'] = $body; } curl_close($ch); return $ret; }前端js getqrpic(); function getqrpic() { var getvcurl = "qlogin/getqrpic/r/" + Math.random(1); $.get(getvcurl, function (res) { console.log(res.info.qrsig) if (res.status == 0) { $('#qrimg').attr('qrsig', res.info.qrsig); $('#qrimg').html('<img onclick="getqrpic()" src="data:image/png;base64,' + res.info.data + '" title="点击刷新">'); } else { //alert(res.msg); } }, 'json'); } $(document).ready(function(){ interval1=setInterval(getMsg,2000); }); function getMsg() { var qrsig=$('#qrimg').attr('qrsig'); var getvcurl = "qlogin/qqlogin/qrsig/" + decodeURIComponent(qrsig) + '/r/' + Math.random(1); $.get(getvcurl, function (res) { if (res.status == 200) { // 这里写登入过后你执行的语句 } else if (res.status == 205 || res.status == 306) { getqrpic(); } else { } }, 'json'); }示例网站:http://www.chinawenshu.com
2019年04月18日
16 阅读
3 评论
0 点赞