QQ群信息爬取-------抓包破解接口(2)

QQ群信息爬取-------使用模拟登陆(1)
这个比之前的爬取效率更高,爬取的网站https://qun.qq.com/member.html,简单说一下思路

  1. 首先首先使用模拟登陆获取cookie
  2. 经过抓包,我发现了Q群的数据接口为https://qun.qq.com/cgi-bin/qun_mgr/search_group_members,使用requests模块向该网站发送post请求,需要post的数据格式为:{‘gc’: qqGroupNum, ‘st’: 0, ‘end’: 100, ‘sort’: 0, ‘bkn’: self.bkn},返回结果为json数据
  3. 拿到json数据就可以保存到文本或者数据库。

1.模拟登陆

还是使用selenium模拟登陆即可

url = "https://qun.qq.com/member.html"
driver = webdriver.Chrome()
driver.delete_all_cookies()
driver.get(url)

time.sleep(1)
driver.switch_to.frame("login_frame")  # 进入登录iframe
time.sleep(1)
change = driver.find_element_by_id("switcher_plogin")
change.click()
driver.find_element_by_id('u').clear()  # 选择用户名框
driver.find_element_by_id('u').send_keys(qq)
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys(passwd)
driver.find_element_by_class_name("login_button").click()

获取到一些关键的cookie值即可关闭浏览器了,关键的cookie值有skey,p_skey
下面详解抓包破解

2.抓包破解接口

打开网页https://qun.qq.com/member.html用户密码登陆和fiddler
在这里插入图片描述
输入正确QQ号和密码成功登录后,查看一下fiddler
在这里插入图片描述
为了看得更清楚这个请求,操作如下
在这里插入图片描述
右上角有个 Execute可以执行这个post请求,可以自己琢磨一下
经过我的测试,想通过这个请求获取到正确的数据必须需要cookie中的uin,skey,p_skey以及请求数据gc,st,end,sort,bkn。
对这些参数进行一个一个分析,如下:

  • uin:这个一眼就可以看出来是,字符o拼上自己的QQ号即可
  • skey和p_skey:不太清楚是啥,但可以从cookie中直接获取到,所以才需要进行模拟登陆获取cookie的步骤
  • gc:QQ群的号码
  • st:应该是start的意思,Q群成员的序号
  • end:和st对应,Q群成员的序号,通过st和end就可以获取到从第st个到第end个成员这个意思
  • sort:不用管,就给个值为0就行了
  • bkn:这个数据是经过特别计算的值,应该是为了验证登录之类的,相当于小小的加密了吧,我研究了一段时间,不管从哪里都获取不到这个值,最后是在一段JavaScript代码里面,发现这个值的计算方式,嗯,我果然是天才,哈哈哈,我们回到浏览器,F12一下,查看都有哪些js,如下
    在这里插入图片描述
    把js复制到notepad++,来一探究竟吧
    在这里插入图片描述
    所以我们知道bkn值的计算是和cookie值中的skey有关的,把这些数据都拿出来,愉快的编程吧
skey = driver.get_cookie('skey')['value']
p_skey = driver.get_cookie('p_skey')['value']
cookie = "uin=o" + qq + "; skey=" + self.skey + "; p_skey=" + self.p_skey
headers = {
   
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
    "Cookie": self.cookie
}
e = skey
t = 5381
for n in range(0, len(e)):
    t += (
  • 40
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值