2.3 伪装成用户发送说说
2.3.1 使用python发说说
伪装发包呢,我们就直接用python盘他,那就这样开始吧。 首先呢,我们需要导入一个模块requests,用来帮助我们发包以及后期的骚操作。
import requests
然后就是设置三个参数,请求URL,请求头,表单数据,这些在上一节中以及分析过了,直接照搬照抄就行了,然后就是代码,
url = 'https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?qzonetoken=79509429e2fcb1a2a144a81d05f276e0695b6c542b02be691eb7e50c3944ed46751c4d46c22bb589b4&g_tk=428053921' headers = { 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'cookie': 'qz_screen=1536x864; QZ_FE_WEBP_SUPPORT=1; __Q_w_s__QZN_TodoMsgCnt=1; Loading=Yes; RK=wEqZRhmiYM; ptcz=6ba4ad48c0993a9803b17b7cd71f402d78cc3a13ac6c8eaad6a2f3425ac813b0; logout_page=dm_loginpage; dm_login_weixin_rem=; pgv_pvi=2620835840; pgv_pvid=6287814200; pgv_info=ssid=s4061550260; pgv_si=s32916480; _qpsvr_localtk=0.044227743304393385; ptui_loginuin=2123432340; uin=o2123432340; skey=@ZIn5D4kG1; p_uin=o2123432340; pt4_token=W05iPjuHpiITZnV9DPyR0kdOEkKObZr4bJxhq7vd3Kc_; p_skey=GSHvtQxQPQcYWoUBhol-r8ZI2jlrN0uHE*W7Yl6ejkY_; 2123432340_todaycount=0; 2123432340_totalcount=7; cpu_performance_v8=4', 'origin': 'https://user.qzone.qq.com', 'referer': 'https://user.qzone.qq.com/2123432340', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', } data = { 'syn_tweet_verson': '1', 'paramstr': '1', 'pic_template': '', 'richtype': '', 'richval': '', 'special_url': '', 'subrichtype': '', 'who': '1', 'con': '2020年6月2日18:24:57,伪造发说说测试!!!', 'feedversion': '1', 'ver': '1', 'ugc_right': '1', 'to_sign': '0', 'hostuin': '2123432340', 'code_version': '1', 'format': 'fs', 'qzreferrer': 'https://user.qzone.qq.com/2123432340', }
然后就是POST请求,这样写:
response = requests.post(url=url, headers=headers, data=data)
然后为了展示效果,我们输出一下状态码以及返回内容。
print(response.text) print(response.status_code)
然后就是代码跑起来!跑完之后可以看到,这里返回的状态码是200,说明请求正常。
返回到自己的空间,刷新一下,可以空间说说已经发送出去了,这样就实现了用python发说说的过程。
2.3.2 获取qzonetoken
接下来的任务就是,分析qzonetoken和g_tk这两个值是怎么来的?首先第一个qzonetoken,现在回到浏览器,全局搜索一下qzonetoken,
可以发现这里出现很多条包含qzonetoken的,这里我们再在qzonetoken后面加一个 =再进行搜索,因为我们要知道他是怎么来的,所以查他是怎么赋值的。
哦吼,这样就只有一条信息了,然后点开看一下。然后这就是所谓的qzonetoken了,居然直接包含在网页代码中,所以到此就可以取得qzonetoken了,直接到时候解析html即可。
2.3.3 获取g_tk
然后就是下一个值g_tk,然后在这搜索g_tk =,可以看到只有一条记录了,
然后我看到了一个getToken(),我们来搜索一下这个方法
然后就可以看到这个方法是这样子的(红框内为算法,箭头表示位置)
到这里也就只能打个断点调试一下吧,
然后就卡在这里了,我们来慢慢分析一下。
往上面翻一点就可以看到这串东西了。
def g_tk(t): e = 5381 for i in range(len(t)): e += (e << 5) + ord(t[i]) return e & 2147483647
看到这,我不禁想起了我中午才弄过的hash33,详情见:python实现hash33加密算法,长得似乎差不多呀。然后问题就来了,n是个啥,既然在调试,我们直接控制台输出一下就行了
getToken: function() { try { return top.QZONE.FP.getACSRFToken() //尝试返回 } catch (a) { var e = 5381 //否则直接算 , t = n.get("p_skey") || n.get("skey") || n.get("rv2"); for (var i = 0, r = t.length; i < r; ++i) { e += (e << 5) + t.charAt(i).charCodeAt() } return e & 2147483647 } },
输出测试一下:
看,又出现了,他的neme是不是就是罪魁祸首cookie,这样的话t也就不难理解了,
t = n.get("p_skey") || n.get("skey") || n.get("rv2")
就是取cookie里面的p_skey或者skey或者rv2,然后最后返回了一串数字,就是所谓的g_tk了,不信?我们来看下。
然后呢,用python改写一下就是这样子的。
def g_tk(t): e = 5381 for i in range(len(t)): e += (e << 5) + ord(t[i]) return e & 2147483647
输出测试一下:
传入p_skey或者skey或者rv2就可以返回需要的g_tk了。
至此为止,我们就只需要获取到Cookie就可以为所欲为了,那么这时候可能就有人问了,Cookie怎么来呢,别人怎么知道我的Cookie呢?那就接着往下看吧!
2.4 怎么获取你的Cookie
这个就有很多方式了,不过只要你注意的话还是可以防得住的,像我的cookie就从来没有泄露过。
这不正愁不知道哪里找素材,这里就有人送上门来了,刚刚空间收到一条留言,是这样子的眼熟不。 我们将这个二维码转成网址,最终的结果是这样https://w.url.cn/s/ApUGGIq,然后这个是一个短网址,我们需要将他还原一下, 哎哟我去,又是一层短网址,这套娃玩的。。继续走你然后就找到了这个网站https://qdhlcgs.com/高仿QQ空间登陆页面。看人家多贴心,键盘都给你准备好了 如果这时候你输入了账号密码,你的QQ和密码就会被记录到后台,这时候Cookie啥的就不在话下了,然后那些所谓的黑客最后只需要将账号密码导出,批量通过QQ账号密码获取Cookie,然后就可以为所欲为了,然后我在网上看到这么一款软件,你懂得。基本上发说说,给好友群发消息或者等等一系列行为基本上都可以实现了。 至于怎么登陆获得cookie可以看下我的这篇用python代码扫码登陆QQ空间获取Cookie值,QQ登陆协议,python模拟登陆QQ
评论 (0)