开发环境Win10
python 3.6.3
pycharm 2018.1
第三方库csv
requests
pymysql
selenium
无头浏览器 PhantomJS
主要思路通过QQ邮箱导出好友文件,使用csv获取所有好友QQ号。
2. 使用selenium和PhantomJS模拟登录QQ空间。
3. 使用requests库重发请求。
进入QQ邮箱,点击左侧通讯录,然后点击导出联系人文件
使用csv模块读取csv文件,并获取所有QQ号。
import csv
def get_qq():
with open('qq.csv') as f:
qq_num = []
for row in csv.reader(f):
qq_num.append(row[3].split('@')[0])
进入QQ空间,打开浏览器开发者工具,点击“说说”时,会看到浏览器发送了这样一个请求
返回内容为类似json格式的字符串,total为说说总数,可以通过total算出总页数
msglist是所有说说的内容列表,点开后是以下格式,属性看字面意思就可以
接下来分析http请求参数
其中uin和host_uin是访问空间的qq账号,pos为(页码-1)*20
g_tk和qzonetoken是签名
g_tk根据cookies['p_skey']获取,算法如下
def get_gtk(cookies):
hashes = 5381
for letter in cookies['p_skey']:
hashes += (hashes << 5) + ord(letter)
qzonetoken可以在html页面查看
使用selenium和PhantomJS登录QQ空间,获取cookie gtk qzonetoken
import re
def