欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案

发布时间:2023/12/10 编程问答 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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群加群链接[网页版本]解决方案的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。