# QQSGsearch **Repository Path**: alienwu/QQSGsearch ## Basic Information - **Project Name**: QQSGsearch - **Description**: 此仓库记录开发的一个网站 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2019-09-02 - **Last Updated**: 2024-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QQ三国物价在线查询 #### 介绍 这个仓库记录小弟开发过的一个查询应用 #### 用到技术栈 1.开发语言:python,js 2.开发工具:pythcrm,vscode,navicat,chrome 3.数据库mysql,redis 4.开发框架:flask,jquery ## 架构图: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0902/232509_7e5d8b32_5271416.png "架构.png") #### 功能 1.收费注册 2.用户登录/匿名登录 3.用户访问控制 4.用户生存周期 5.缓存 6.商品价格在线查询 #### 功能说明 1.收费注册: 这个功能我参考了其源生的工具设计而来,即传统的发注册码注册账号。因为作者是采用注册平台接口进行注册的,而我想了一种更节省money的做法,那就是先从redis缓存中生成一系列注册码,然后当用户需要注册的时候,会先验证缓存中是否存在该注册码,若存在则进行下一把,若不存在返回注册码不存在。下一步就是从redis缓存中删除该注册码,然后将用户信息存入mysql用户表中。这就实现了收费注册功能。 2.用户登录/匿名登录: 用户表中存在的用户为正常用户,其享受正常的待遇,而我又设计了匿名登录的功能以吸引更多的用户使用,但是只允许匿名用户每天查询30次。 3.用户访问控制: 该功能是承接上面匿名登录功能而设计的,通过为用户的ip设置session来判断用户使用的次数,将用户使用的情况缓存到redis中,其ip生存周期为24h,当用户使用满30次后不允许用户继续查询。而正常用户则通过用户的session来另外判断。 4.用户生存周期: 该功能是承接上面收费注册功能而设计的,在用户成功注册的同时在用户表中生存该用户注册的时间以及30天后的时间,每一次用户登录请求时都会判断用户是否已经过期,若过期就不允许登录,充值后重置注册时间以及生存时间。 5.缓存数据库: 这个模块是整个应用的关键,因为我一开始设计的思路是一号百用,考虑到对方服务器的压力,以及一号百用中的一号安稳,设计缓存是很有必要的。 6.商品价格在线查询: 该应用的主体功能。 #### 使用说明 该项目不能够自行部署!!仅供参考。 ## 项目设计思路分享: **设计目的**: 本人平时喜欢玩一个叫QQ三国的网游,在一次无意之中发现了一个QQ三国查询工具,此工具为一个外挂团队编写的。因为我知道这个工具是用易语言开发的,所以一开始我怀着非分之想,视图通过od来逆向该工具以达到白嫖。但是经过一轮逆向以及抓包分析之后发现该工具的反编译做得很到位,通过od分析出该工具用了vmp加壳还装了E盾(很强!很舍得花成本!),再加上经过测试后发现就算逆向成功了其查询接口是带token认证的,后来我就放弃了逆向它的想法了。后来我无意中想到了一个鬼才的想法就是一号万用。那就是购买一个账号后脱壳调接口以实现一个账号N个用户使用的效果。这就是这个项目产生的由来。 **设计过程**: 其实这个外挂团队是十分有经验的,我想到的,他们也想到了,所以他们对数据包的请求体进行了加密,但是这也阻挡不了我完成这个项目。我之前在od中逆向出他的模糊查询关键字,于是我就编写了一个自动化脚本,带着这些关键字来逐个请求一遍接口,再把数据包收集过滤,然后过滤出请求体的加密内容。这样我就能构建一个完整的商品sql表了。 完成商品sql表后,我就开始开发自己的中转服务器。详情参考app.py