JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案
生活随笔
收集整理的这篇文章主要介绍了
JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
基本概念
QQ群idkey:没有官方解释,在QQ群推广页面可以获得。
QQ群加群链接:即带有QQ群idkey的一个特殊URL。
问题描述
QQ群推广官网:https://qun.qq.com/join.html
可以获得当前登入QQ号所管理的QQ群的 idkey ,但是不能自定义QQ群号并获取QQ群的 idkey。
问题分析
经分析获取QQ群的 idkey 的API如下所示:
GET请求:
参数如下所示:
注:QQ群列表以 ","(英文逗号)分割。
必须的Request Headers如下所示:
但查找资料过程中发现替换成
http://qun.qq.com/join.html亦可。
Request示例:
Response示例:
解决方案
JAVA版本
源代码
注: HttpClientUtils为HttpClient工具类,参考:https://shentuzhigang.blog.csdn.net/article/details/104274609
package club.zstuca.myzstu.provider;import club.zstuca.myzstu.httpclient.HttpClientUtils; import org.json.JSONArray; import org.json.JSONObject; import org.springframework.stereotype.Component;import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;/*** @Author ShenTuZhiGang* @Version 1.0.0* @Date 2020-02-18 17:58*/ @Component public class QQProvider {private static String QQQUN_JOIN_URL = "http://qun.qq.com/join.html";private static String QQQUN_GET_WPA_URL ="http://qun.qq.com/proxy/domain/shang.qq.com/wpa/g_wpa_get";public static Map<String,String> getQQqunWPA(List<String> guins){Map<String,String> headers=new HashMap<>();headers.put("Referer",QQQUN_JOIN_URL);Map<String,String> params=new HashMap<>();params.put("t","" + new Date().getTime());String guin_str="";if(guins !=null){for (String guin:guins){if (!guin_str.equals("")){guin_str = guin_str + ",";}guin_str = guin_str + guin;}}params.put("guin",guin_str);Map<String,String> guinANDkey = new HashMap<>();String Response;try {Response = HttpClientUtils.doGetRequest(QQQUN_GET_WPA_URL,headers,params);}catch (Exception e){e.printStackTrace();return guinANDkey;}try {JSONObject jsonObject = new JSONObject(Response);JSONObject result = jsonObject.getJSONObject("result");JSONArray data= result.getJSONArray("data");for (int i = 0; i < data.length(); ++i) {JSONObject item = (JSONObject) data.get(i);guinANDkey.put(item.getString("guin"),item.getString("key"));}}catch (Exception e){e.printStackTrace();return guinANDkey;}return guinANDkey;} }JAVA TEST
package club.zstuca.myzstu;import club.zstuca.myzstu.httpclient.HttpClientUtils; import club.zstuca.myzstu.provider.QQProvider; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.util.*;/*** @Author ShenTuZhiGang* @Version 1.0.0* @Date 2020-02-18 17:34*/ @SpringBootTest public class QQqunTEST {@Autowiredprivate QQProvider qqProvider;private String testGuin = "110";//测试QQ群@Testpublic void qqqun(){Map<String,String> params=new HashMap<>();Map<String,String> headers=new HashMap<>();params.put("guin",testGuin);params.put("t","" + new Date().getTime());headers.put("Referer","http://qun.qq.com/join.html");//headers.put("Host","qun.qq.com");String s=HttpClientUtils.doGetRequest("http://qun.qq.com/proxy/domain/shang.qq.com/wpa/g_wpa_get",headers,params);System.out.println(s);}@Testpublic void qqqun2(){String[] temps=testGuin.split(",");List<String> list = new ArrayList<>();for(String string: temps ){list.add(string);}Map<String, String> qQqunWPA = qqProvider.getQQqunWPA(list);System.out.println(qQqunWPA.get(QQ群号));} }
PHP版本
版本一
<?php $qqun=urlencode('['.'334802'.']');//群号 $t=time()*1000; $url="http://wp.qq.com/wpa/g_wpa_get?guin=".$qqun."&t=".$t; $ResArray=json_decode(curl_request($url,'post'),true); foreach ($ResArray['result']['data'] as $k => $v) {$array['guin']=$v['guin']; //群号$array['idkey']=$v['key']; // idkey$array['url']='http://wp.qq.com/wpa/qunwpa?idkey='.$v['key'];//加群链接 } print_r($array); //参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookiesfunction curl_request($url,$post='',$cookie='', $returnCookie=0){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($curl, CURLOPT_AUTOREFERER, 1);curl_setopt($curl, CURLOPT_REFERER, "http://XXX");if($post) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));}if($cookie) {curl_setopt($curl, CURLOPT_COOKIE, $cookie);}curl_setopt($curl, CURLOPT_HEADER, $returnCookie);curl_setopt($curl, CURLOPT_TIMEOUT, 10);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$data = curl_exec($curl);if (curl_errno($curl)) {return curl_error($curl);}curl_close($curl);if($returnCookie){list($header, $body) = explode("\r\n\r\n", $data, 2);preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);$info['cookie'] = substr($matches[1][0], 1);$info['content'] = $body;return $info;}else{return $data;} }版本二
<?php /*免IDKEY加群 *Author:消失的彩虹海 */ error_reporting(0); function get_curl($url, $post=0, $referer=0, $cookie=0, $header=0, $ua=0, $nobaody=0) {$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);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 (Linux; U; Android 4.0.4; es-mx; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0");}if ($nobaody) {curl_setopt($ch, CURLOPT_NOBODY, 1);}curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$ret = curl_exec($ch);curl_close($ch);return $ret; } $qun=isset($_GET['qun'])?$_GET['qun']:'326026548'; $data=get_curl('http://shang.qq.com/wpa/g_wpa_get?guin='.$qun.'&t='.time(),0,'http://qun.qq.com/join.html'); $arr=json_decode($data,true); $idkey=$arr['result']['data'][0]['key']; $url='http://shang.qq.com/wpa/qunwpa?idkey='.$idkey; header("Location:{$url}"); exit; ?>参考文章
https://www.52pojie.cn/forum.php?mod=viewthread&tid=826998
https://blog.youngxj.cn/544.html
总结
以上是生活随笔为你收集整理的JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 身份证号码有效性检测算法 ( js版 转
- 下一篇: angular路由传递参数_Angula