jiujiukeji 发表于 2020-4-1 15:26

微信扫码登录

本帖最后由 jiujiukeji 于 2020-4-1 20:32 编辑

<?php
header('Access-Control-Allow-Origin:*');
header('Content-type:application/json; charset=utf-8');
error_reporting(0);
date_default_timezone_set("PRC");
!empty($_GET['type']) ? $type = $_GET['type'] : error("请求参数错误,请刷新重试!~~");
switch ($type)
{
    case 'Getqrcode':
      echo json_encode(getqrcode());
      break;
    case 'Getresult':
      !empty($_GET['qrsig']) ? $qrsig=$_GET['qrsig'] : error("请求参数错误,缺少qrsig~~");
      echo json_encode(getresult($qrsig),JSON_UNESCAPED_UNICODE);
      break;
    default:
      echo json_encode(getqrcode());
}
/**
* 获取二维码
*/
function getqrcode() {
      
    $api = 'https://login.wx2.qq.com/jslogin?appid=wx782c26e4c19acffb';
    $ret = get_curl($api);
      //print_r($ret);die;
    preg_match('/"(.*?)"/', $ret, $matches);
      //print_r($matches);die;
    $qrcode['data'] = 'https://login.weixin.qq.com/qrcode/'.$matches;
    $qrcode['uuid'] = $matches;
    return $qrcode;
}

/**
* @Param $qrsig
* @Return array
* 获取登录状态
*/
function getresult($uuid) {
    $paras['ctime'] = 1000;
    $paras['rtime'] = 1000;
    $paras['refer'] = 'https://wx2.qq.com/';
    $api = 'https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=' . $uuid . '&tip=0';
    $body = get_curl($api, $paras);
    preg_match('/(\d){3}/', $body, $code);
    preg_match('/redirect_uri="(.*?)"/', $body, $url);
    if ($code == '200') {
      $body = get_curl($url);
      preg_match('/<wxuin>(\d*?)<\/wxuin>/', $body, $wxuin);
      $ret['code'] = 200;
      $ret['data']['uin'] = $wxuin;
      $ret['data']['type'] = 'wx';
      $ret['msg'] = '微信登录成功';
    } else {
      $ret['code'] = 408;
      $ret['msg'] = '请使用手机微信扫码登录';
    }
      print_r($ret);die;
    return $ret;
}

function get_curl($url, $paras = array()) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $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 ($paras['ctime']) { // 连接超时
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $paras['ctime']);
    }
    if ($paras['rtime']) { // 读取超时
      curl_setopt($ch, CURLOPT_TIMEOUT_MS, $paras['rtime']);
    }
    if ($paras['post']) {
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);
    }
    if ($paras['header']) {
      curl_setopt($ch, CURLOPT_HEADER, true);
    }
    if ($paras['cookie']) {
      curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);
    }
    if ($paras['refer']) {
      if ($paras['refer'] == 1) {
            curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');
      } else {
            curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);
      }
    }
    if ($paras['ua']) {
      curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);
    } else {
      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
    }
    if ($paras['nobody']) {
      curl_setopt($ch, CURLOPT_NOBODY, 1);
    }
    curl_setopt($ch, CURLOPT_ENCODING, "gzip");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ret = curl_exec($ch);
    curl_close($ch);
    return $ret;
}

function error($str){
    exit(json_encode([
      "code"=>-1,
      "msg"=>$str
    ],JSON_UNESCAPED_UNICODE));
}


请求方式:
www.xxx.com/wx.php?type=Getqrcode

我去年买了各表 发表于 2021-4-21 23:41

fenga6 发表于 2020-4-5 20:23

{"data":"https:\/\/login.weixin.qq.com\/qrcode\/wYCMzHY_UA==","uuid":"wYCMzHY_UA=="}

w780628d 发表于 2020-4-1 15:41

逍遥青春 发表于 2020-4-1 15:49

这个是干嘛滴

搅屎棍 发表于 2020-4-1 15:51

所以这是干什么的 。。。

emmm2333 发表于 2020-4-1 15:51

{"code":-1,"msg":"请求参数错误,请刷新重试!~~"}

伊邪那美491 发表于 2020-4-1 15:53

没看懂什么意思

看,六眼飞鱼 发表于 2020-4-1 15:58

膜拜一波大佬操作,没看懂

YWM2017 发表于 2020-4-1 16:05

{:1_907:}一脸茫然

Capitalwell 发表于 2020-4-1 16:06

没有代码的说明吗

Nemoris丶 发表于 2020-4-1 16:07

应该是扫码登陆的功能实现细节把?
页: [1] 2 3
查看完整版本: 微信扫码登录