星期六, 六月 22, 2019

128 通过控制台模拟POST请求 使QQ设置为"不允许任何人"添加

20220406更新: 现在手机QQ已经支持设置禁止加我为好友了. 不用这么折腾了. 
以下是原文.

捣鼓了一天的破玩意, 终于把它给研究出来了.
其实改为拒绝所有人添加, 有一种最原始最简单的方法, 就是用QQ国际版. 目前官网还有QQ国际PC版, 最后的更新日期是: 2014-01-22. 下载地址 这版本已经5年多了, 很担心后期会失效, 截止20190616发文之日依然可用. 但使用老版不是今天发文的目的. 继续往下看.
下面记录的是我今天捣鼓出的方法, 用浏览器+F12控制台, 就可以设置为拒绝所有人添加QQ好友. 电脑小白可以绕过了. 
1, 要求有控制台功能的浏览器, 比如chrome核的任意浏览器, 火狐也行.
2, 先访问这个地址: https://ui.ptlogin2.qq.com/cgi-bin/login?appid=8000212&style=12&s_url=http://vip.qq.com/client/level
访问后显示出了QQ等级的页面
解释一下这是干嘛的, ptlogin是腾讯统一的登录接口. s_url就是目的网址了. 关于这个统一登录接口的应用, 我写过一篇文章, 感兴趣的可以自己去折腾: 55 QQ等级查询页面 / 腾讯电脑管家任务页面 / TGP 和 LOL 首页 / QQ钱包营业厅
用你的QQ号登录之后(有SSO组件的支持点头像登录), 浏览器就已经有session或者临时cookie等东西了. 
3, 然后访问http://ti.qq.com/friendship_auth/index.html#p1它会显示如下界面↓
4, 可以看到√停在了"需要验证信息"这里. 现在按f12, 调出开发者工具. 切换到Network底下↓
可以看到底下是空的, 等待中...
5, 刷新一下界面, 再点上面的"允许任何人", 让QQ加好友设置产生变化. 可以看到一条名为"set"的网络请求出现了, 点击它, 右边就会出现这条请求的Headers, 哈哈, cookie和post参数应有尽有哇. ↓
6, 准备好代码. 在headers里面有两条内容比较重要, 一是Cookie, 二是post参数.
cookie显而易见就是上图中涂掉的那一大串, post参数在最底下, 如果不是下图这样的话↓ 就点view source. 
这段form data就是要post的参数了, 应该是这样的:
req=%7B%22at%22%3A0%2C%22q%22%3A%22%22%2C%22a%22%3A%22%22%2C%22l%22%3A%5B%5D%2C%22viaphone%22%3A1%7D&bkn=********
上面有个0是粗体的, 这个0就是"允许任何人"的意思, 1是"需要验证信息"的意思, 再后面又是参数又是数组的, 我也懒得捣鼓. 总之我们把这个0改成2就好了. 至于为什么是2, 感兴趣的话可以看看页面的html代码. 于是这段请求就变成了
req=%7B%22at%22%3A2%2C%22q%22%3A%22%22%2C%22a%22%3A%22%22%2C%22l%22%3A%5B%5D%2C%22viaphone%22%3A1%7D&bkn=********
7, 好了, 等会提交要用到控制台的fetch, 所以我们把代码拼接起来:
fetch('http://ti.qq.com/cgi-node/friend-auth/set', { method: 'POST', headers: { 'Accept': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '114', 'Cookie': '把你刚才在Headers里看到的Cookie复制过来', 'Host': 'ti.qq.com', 'Origin': 'http://ti.qq.com', 'Referer': 'http://ti.qq.com/friendship_auth/index.html', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', }, body:"req=%7B%22at%22%3A2记得这里要改成2啊%2C%22q%22%3A%22%22%2C%22a%22%3A%22%22%2C%22l%22%3A%5B%5D%2C%22viaphone%22%3A1%7D&bkn=*******这个bkn可能每个QQ都不一样照着你浏览器里的粘贴就行了", }).then(res => res.json()).then(console.log)
8, 打开console栏, 把准备好的代码粘贴进去, 然后回车↓
9, 提示修改成功, 刷新一下网页↓ 可以看到"不允许任何人"出现了, 而且√也在上面. 
10, 再去QQ电脑端或者手机端确认一下. 我用的是电脑TIM:
搞定!
*在研究这个方法之前搜索了一遍网络, 得到的结果无非三种, 用老版QQ, 设置成答对问题, 用专门的软件(可能有潜在的盗号风险). 我这个方法公开透明, 自己动手多安全咯~
*可能有人会问, 为什么不用f12把表单的代码改成可见, 答案是否定的. 就算把不允许任何人的元素显示出来了, 点击之后是不会有post请求的, 所以才用到模拟post.

星期六, 六月 01, 2019

127 发一个安卓淘宝客户端的UA

Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; MI MAX Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 UWS/3.19.0.12 Mobile Safari/537.36 AliApp(TB/8.8.0) UCBS/2.11.1.1 TTID/10003959@taobao_android_8.8.0 WindVane/8.5.0 1080X1920 UT4Aplus/0.2.16
淘宝客户端的不像QQ钉钉微信那么好抓, 它屏蔽了所有外部链接, 不能用内置浏览器打开, 这时候就要用到抓包工具了.
我在安卓端用的是 无root抓包, 导入了CA, 虽然不知道有没有用, 但是感觉类似中间人攻击什么的, 总之UA是抓到了.
不要尝试在浏览器上模拟UA访问淘宝, 会弹出对话框要求传参的.