事实:利用Python找出QQ空间把你屏蔽的人
优采云 发布时间: 2022-11-24 00:26事实:利用Python找出QQ空间把你屏蔽的人
前言
大家好,我叫善念。这篇文章是瞎写的,为什么是瞎写的……我没有做任何准备,自己也没有做过这个实战,但心里一定有想法。
其实如果是这样的话,未必对读者不好,因为如果我没有做过,那么在写文章的时候分析过程一定很清楚。我们在研究案例吗?不,记住你学到的一定是分析的方法。
分析(x0整体思路分析)
想一想,当我们进入一些朋友的空间时,你会发现有的可以直接进入,而有的是这样的:(翻了几十个朋友,发现一个不允许我访问。 ..)
也就是说,我只需要获取所有的好友号,然后获取请求,看返回的文本中是否有设置权限的所有者。您可以通过以下方式访问这些关键字。
可以看到get请求有点长,后面的字符串我们也看不懂,所以我们删掉看看能不能正常访问:
结果是一样的。其实这就是所谓的参数冗余。比如我们百度一下
可以看到除了我们的关键字123之外还有很多其他的参数,那么如果我们把这些参数删掉呢?
结果是一致的,这就叫参数冗余(redundant),所以剩下的就看各位小伙伴怎么搞定了!
分析(获取x1好友数据)
有很多关于朋友的接口资料。。。群官网和空间官网都可以获取。因为之前写过一篇用Python采集集团人员数据记录JavaScript逆向分析过程的文章,写了如何获取集团数据。其实这个接口也是一样的。好友数据是可以获取的,下面就用群官网的界面吧!
用于准备的模块
from selenium import webdriver
import json
import requests
import execjs
import jsonpath
模块安装
主要用到这五个模块,其中json是内置模块,其他都是第三方模块。安装方法如下:
pip install selenium
pip install requests
pip install PyExecjs
pip install jsonpath
插件安装
关于selenium模块,我们重点说一下:
Selenium 是一种用于 Web 应用程序测试的工具。Selenium 测试直接在浏览器中运行,就像真实用户一样。
如果你不明白,让我说清楚。如果你是一名网页开发者,开发过上百个网站,那么你是否认为一个一个地测试bug是浪费时间?而selenium的框架是用来模拟人来自动控制浏览器的,所以节省了很多时间。
既然selenium可以控制浏览器,那么它们之间肯定有一座桥梁,难道它们不能无中生有吗?
然后控制的浏览器风格不同,中间的桥接也不同。比如我比较喜欢用chrome浏览器,那我们就需要下载一个selenium和Chrome的桥梁——Chromedriver插件
下载链接
下载与您当前的 Google Chrome 版本最接近的 Chromedriver
然后像我一样,下载
" />
而已。
Windows系统需要下载32位,剩下的自己想办法。点击下载win32。
那么如何连接Python和selenium,这里需要配置一个环境变量,即将Python和selenium放在同一个目录下:
至此,我们的环境就搭建好了。
分析 (x0)
输入我们的目标网站:target website
点击登录后,点击群管理:
然后点击会员管理进入我们的资料页面:
到这里大家很好奇,为什么要获取好友数据,去群数据呢?
这个时候我们打开浏览器的开发者工具,点击会员管理
你会发现你抓到了两个特殊的包,一个是获取群数据列表,一个是获取好友列表。这里就不看组数据了。如果你想看它,就看我之前写的那篇文章。
post请求,参数bkn为修改后的值,返回数据为:
可以看到返回结果中有四组,其实就是我朋友的四组... 怎么提取里面的数据呢?那是不是意味着我们需要先固定之前的bkn参数!当然你可以硬写bkn和cookies,也可以post获取数据,但是每次都要抓包复制,看来你很low。
分析 (x2)
走吧,开始分析我们的bkn是如何生成的:
上次有人问我,怎么搜索这个东西。。。我在这里告诉大家,先点击三个点,再点击搜索:
可以看到只有一个js文件收录
了bkn,就完美了,事情也越来越简单了。
请不要担心JavaScript加密,静下心来好好看看
o.data.bkn
o字典中data中的bkn只是一个嵌套,也就是说bkn属于o字典中的一个key,然后实际上是赋给了一个function函数。注意最后用一个()是什么意思?
将函数分配给变量 bkn,然后调用函数。解释什么?bkn就是函数中的返回值……是不是很简单?我不能多读一遍。
在函数中,它是一个循环。当不满足条件时,会一直添加,直到条件满足。不懂的可以学习基本的JavaScript语法。不学也不是什么大问题。我们可以直接选择 JavaScript 代码。
<p>for (var e = $.cookie("skey"), t = 5381, n = 0, o = e.length; n