首页 > 其他分享 >QQ空间点赞协议实现

QQ空间点赞协议实现

时间:2024-09-20 15:49:13浏览次数:10  
标签:QQ 协议 setRequestProperty qq tk qzone 点赞 conn

QQ空间协议点赞实现以及QQ空间g_tk算法

QQ空间协议——点赞篇

该文章点赞的前提是有登录成功的Cookie

登录协议请看我的其他文章

结尾附实现代码

QQ空间协议账号密码登录

QQ空间扫码登录协议实现

一、抓包、参数分析 

1.1数据包1—点赞包

https://user.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?g_tk=456731308

g_tk——登录qq的gtk 利用Cookie中的skey通过加密算法获得

POST请求表单数据:

qzreferrer=https%3A%2F%2Fuser.qzone.qq.com%2F2793603016&opuin=2793603016&unikey=http%3A%2F%2Fuser.qzone.qq.com%2F20050606%2Fmood%2Faef23101f9b9db6644310800&curkey=http%3A%2F%2Fuser.qzone.qq.com%2F20050606%2Fmood%2Faef23101f9b9db6644310800&from=1&appid=311&typeid=0&abstime=1725676025&fid=aef23101f9b9db6644310800&active=0&fupdate=1 


    "qzreferrer": "https://user.qzone.qq.com/2793603016",
    "opuin": "2793603016",
    "unikey": "http://user.qzone.qq.com/20050606/mood/aef23101f9b9db6644310800",
    "curkey": "http://user.qzone.qq.com/20050606/mood/aef23101f9b9db6644310800",
    "from": "1",
    "appid": "311",
    "typeid": "0",
    "abstime": "1725676025",
    "fid": "aef23101f9b9db6644310800",
    "active": "0",
    "fupdate": "1"

opuin——被点赞的QQ

unikey——点赞文章的URL KEY (就是点赞文章的链接)

curkey——和unikey一样

abstime——点赞时间戳

fid——文章id

响应结果 

响应mseeage为succ即为点赞成功,若为fail则为失败 

1.2  unikey和fid包

https://user.qzone.qq.com/proxy/domain/ic2.qzone.qq.com/cgi-bin/feeds/feeds3_html_more?uin=2793603016&scope=0&view=1&daylist=&uinlist=&gid=&flag=1&filter=all&applist=all&refresh=0&aisortEndTime=0&aisortOffset=0&getAisort=0&aisortBeginTime=0&pagenum=1&externparam=offset=11&total=8&basetime=1701051331&feedsource=0&firstGetGroup=0&icServerTime=0&mixnocache=0&scene=0&begintime=0&count=10&dayspac=0&sidomain=qzonestyle.gtimg.cn&useutf8=1&outputhtmlfeed=1&rd=0.6607262087150207&usertime=1726798706032&windowId=0.007749873364047644&getob=1&g_tk=784492993

uin——登录的QQ

basetime——可固定

usertime——发包时间戳

g_tk

用Cookie GET请求从相应内容中找到data-unikey即可获得unikey和fid

这个包是说说内容的包,不仅包含这两个参数,还有说说的内容,浏览量,点赞量等数据

 二、g_tk算法

通过跟栈即可找放到g_tk加密的地方 可以看到,g_tk是通过Cookie中的skey进行计算得到的

三Java代码实现 

3.1g_tk算法

public static String getTK(String skey){//g_tk计算
	int hash = 5381;		
	for (int i = 0, len = skey.length(); i < len; ++i) {			
	hash += (hash << 5) + skey.charAt(i);		
	} 
	return (hash & 2147483647) + "";	
	}

3.2点赞包发包

	static void doLike(){
		try{
			int num=0;
			num++;
            BufferedReader read3=null;
            String urll="https://h5.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?g_tk="+tk;
            URL url=new URL(urll);
            HttpsURLConnection conn=(HttpsURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Host", "h5.qzone.qq.com");
            conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0");
            conn.setRequestProperty("Accept", "textml,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8");
            conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("Cache-Control","no-cache");
            conn.setRequestProperty("Origin","https://user.qzone.qq.com");
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            conn.setRequestProperty("Sec-Fetch-Dest", "iframe");
            conn.setRequestProperty("Sec-Fetch-Mode", "navigate");
            conn.addRequestProperty("Upgrade-Insecure-Requests","1");
            conn.addRequestProperty("TE","trailers");
            conn.setRequestProperty("Sec-Fetch-Site", "same-origin");
            conn.setRequestProperty("Cookie",cookie.toString());
            conn.setDoInput(true);
            conn.setDoOutput(true);
            OutputStream outt = conn.getOutputStream();
            String mes="qzreferrer=https%3A%2F%2Fuser.qzone.qq.com%2Fproxy%2Fdomain%2Fic2.qzone.qq.com%2Fcgi-bin%2Ffeeds%2Ffeeds_html_module%3Fg_iframeUser%3D1%26i_uin%3D477154712%26i_login_uin%3D"+uin+"%26mode%3D4%26previewV8%3D1%26style%3D35%26version%3D8%26needDelOpr%3Dtrue%26transparence%3Dtrue%26hideExtend%3Dfalse%26showcount%3D5%26MORE_FEEDS_CGI%3Dhttp%253A%252F%252Fic2.s8.qzone.qq.com%252Fcgi-bin%252Ffeeds%252Ffeeds_html_act_all%26refer%3D2%26paramstring%3Dos-winxp%7C100&opuin="+uin+"&unikey=http%3A%2F%2Fuser.qzone.qq.com%2F477154712%2Fmood%2F"+finFidKey.get(ii)+"&curkey=http%3A%2F%2Fuser.qzone.qq.com%2F477154712%2Fmood%2F"+finFidKey.get(ii)+"&from=1&appid=311&typeid=0&abstime="+finabsTime.get(ii)+"&fid="+finFidKey.get(ii)+"&active=0&fupdate=1";
            outt.write(mes.getBytes());
            InputStream in = conn.getInputStream();
            InputStreamReader inn = new InputStreamReader(in,"utf-8");
            BufferedReader bufferedReader = new BufferedReader(inn);
            String line;
            String builder=null;
            Long t=new Long(finabsTime.get(ii)+"");
    		Date date=new Date(t*1000L);
    		System.out.println(date);
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
    	    String timeString = sdf.format(date);
            while ((line = bufferedReader.readLine()) != null){
                builder+=line;
                System.out.println("点赞结果"+builder.toString());
            }
            if(builder.matches(".*succ.*")){
            	System.out.println("序号"+num+"说说key:"+finFidKey.get(ii)+"  说说发布时间:"+timeString+""+"----点赞成功");
            } else{
            	System.out.println("序号"+num+"说说key:"+finFidKey.get(ii)+"  说说发布时间:"+timeString+""+"----点赞失败");
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        } 
	}

标签:QQ,协议,setRequestProperty,qq,tk,qzone,点赞,conn
From: https://blog.csdn.net/qq_37454479/article/details/142374551

相关文章

  • SPI协议
    1、简介​SPI协议是一种高速全双工同步串行通信协议,由一个主设备和一个或多个从设备组成。​四线协议:MISO(MasterInputSlaveOutput)/SDI(SerialDataInput)、MOSI(MasterOutputSlaveInput)/SDO(SerialDataOutput)、SCLK(SynchronousClock)、CS(ChipSelect)1、MISO,主......
  • [网络][知识]TCP-IP各协议的RFC编号和RFC原始文档的获取地址
    TCP/IP协议族包括很多个子协议,下面是TCP/IP 协议和支持服务所支持的 RFC。RFC768  用户数据报协议 (UDP)RFC783  简单文件传输协议 (TFTP)RFC791  Internet 协议 (IP)RFC792  Internet 控制消息协议 (ICMP)RFC793  传输控制协议 (TCP)RFC816  故......
  • QQ、微信可以远程控制对方的手机吗?
    用QQ或者微信可以远程对方的手机吗?▶️答案是:QQ可以但微信不行但现在使用QQ进行远程控制,只可以达到共享屏幕的功能......
  • IEEE 1838-2019协议翻译——第五章 Serial test access ports
    目录5.1Primarytestaccessport5.1.1Specifications5.1.2Description5.2Primarytestaccessportcontroller5.2.1Specifications5.2.2Description5.3Secondarytestaccessport(STAP)5.3.1Specifications5.3.2Description5.......
  • 网络原理 IP协议与以太网协议
     博主主页: 码农派大星.  数据结构专栏:Java数据结构 数据库专栏:MySQL数据库JavaEE专栏:JavaEE关注博主带你了解更多数据结构知识目录1.网络层  IP协议1.IP协议格式2.地址管理2.1IP地址2.2解决IP地址不够用的问题2.3NAT网络地址转换2.4网段划分 3......
  • 传输层——TCP协议
    文章目录TCP协议段格式确认应答(ACK)机制超时重传机制三次握手四次挥手滑动窗口流量控制拥塞控制延迟应答捎带应答TCP协议段格式源/目的端口号:从哪个进程来到哪个进程去;32位序号/32位确认序号:分别代表TCP报文当中每个字节数据的编号以及对对方的确认,是TCP保证可......
  • 什么是 ACME 协议以及它如何工作?
    如果您正在管理网站,您可能听说过SSL/TLS证书以及确保网络通信安全的重要性。但是,如果您可以自动执行颁发、更新和撤销这些证书的整个过程,会怎么样?这就是ACME(自动证书管理环境)的作用所在。您可以使用ACME协议通过与证书颁发机构(CA)的自动交互来简化证书管理。您是否好奇ACME......
  • 多协议数据库管理工具:Navicat Premium (Win&Mac) 中文特别版
    NavicatPremium是一款强大的数据库管理和开发工具,它支持多种数据库系统,包括MySQL、MariaDB、MongoDB、SQLServer、Oracle、PostgreSQL和SQLite。这款软件为用户提供了一个直观的图形用户界面,使得创建、组织、访问和共享信息变得安全而简单。NavicatPremium的主要特点......
  • LCD显示器的接口协议
    简介LCD的接口有多种,常用的LCD的连接方式有如下几种:MCU(MPU)模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式,MIPI模式,LVDS模式,TTL模式,EDP模式。1.SPI接口模式有3线和4线的,连线为CS/,SLK,SDI,SDO四根线,连线少但是软件控制比较复杂。2.IIC接口模式有两根线,SCL时钟线和SDA数据线,连线少但......
  • 为什么HTTPS会引入SSL/TLS协议:深入解析网络安全的基石
    目录1.什么是HTTPS?2.为什么需要HTTPS?3.SSL/TLS协议的作用4.SSL/TLS的工作流程5.为什么HTTPS要引入SSL/TLS?在当今这个数字化时代,网络安全已经成为了我们不可忽视的重要议题。作为软件工程领域的博主,今天将深入探讨一个关键的网络安全技术——SSL/TLS协议,以及它在HTT......