通过Wireshark抓包,QQ空间有个获取全部好友的接口

URL地址

http://m.qzone.com/friend/mfriend_list?g_tk=1399550749&res_uin=[QQ号码]&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat=

然后把登录QQ空间之后的cookies字符串带上就行,电脑手机的cookies都行

Python代码如下

# -*- coding: UTF-8 -*-
import httplib2
import json
import redef LongToInt(value):  # 由于int+int超出范围后自动转为long型,通过这个转回来if isinstance(value, int):return int(value)else:return int(value & 0x7fffffff)
def LeftShiftInt(number, step):  # 由于左移可能自动转为long型,通过这个转回来if isinstance((number << step), long):return int((number << step) - 0x200000000L)else:return int(number << step)
def getOldGTK(skey):a = 5381for i in range(0, len(skey)):a = a + LeftShiftInt(a, 5) + ord(skey[i])a = LongToInt(a)return a & 0x7fffffff
def getNewGTK(p_skey, skey, rv2):b = p_skey or skey or rv2a = 5381for i in range(0, len(b)):a = a + LeftShiftInt(a, 5) + ord(b[i])a = LongToInt(a)return a & 0x7fffffffh = httplib2.Http()
url = 'http://m.qzone.com/friend/mfriend_list?g_tk=1536221140&res_uin=[QQ号码]&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat='
cookieStr = ''
headers = {'Cookie': cookieStr}
if re.search(r'p_skey=(?P<p_skey>[^;]*)', cookieStr):p_skey = re.search(r'p_skey=(?P<p_skey>[^;]*)', cookieStr).group('p_skey')
else:p_skey = None
if re.search(r'skey=(?P<skey>[^;]*)', cookieStr):skey = re.search(r'skey=(?P<skey>[^;]*)', cookieStr).group('skey')
else:skey = None
if re.search(r'rv2=(?P<rv2>[^;]*)', cookieStr):rv2 = re.search(r'rv2=(?P<rv2>[^;]*)', cookieStr).group('rv2')
else:rv2 = None
print getNewGTK(p_skey, skey, rv2)
url = url.replace('1536221140', str(getNewGTK(p_skey, skey, rv2)))
print url
resp, content = h.request(url, 'GET', headers=headers)
print resp
print content
output = json.loads(content)  # json字符串转字典
if output['code'] == -3000:print output['message']
else:items_list = output['data']['list']qqlist = set()for item in items_list:qqlist.add(item['uin'])# 打印信息并输出到文件print '获取QQ号个数'+ str(len(qqlist))filename = 'qqlist.txt'fileobj = open(filename, 'w')result = [str(qq) + '\n' for qq in sorted(qqlist)]fileobj.writelines(result)fileobj.flush()fileobj.close()print '写入完成'

使用时注意替换掉url中的[QQ号码]和headers中的CookieStr

后记:

20150904更新:由于上一版代码没考虑到g_tk取值的问题,导致代码不能重用,现已更改。

Python2.7获取QQ空间全部好友相关推荐

  1. Python2.7获取QQ空间部分好友

    首先需要安装curl工具,然后复制curl 参考http://blog.csdn.net/gsls200808/article/details/46933307 浏览器打开http://user.qz ...

  2. Python2.7获取QQ空间好友头像

    获取QQ空间好友头像并不复杂,通过一个网址就可以获取 获取方法: 小图 http://qlogo.store.qq.com/qzone/[QQ号]/[QQ号]/50 中图 http://qlogo.s ...

  3. Python3.6获取QQ空间全部好友列表

    首先要处理的是gtk算法:从上次分析以来代码并没有变 登录QQ空间后搜索gtk字符串,在三个js中出现了 operation.50303.js gdtlib.20160810.js index.js ...

  4. 在线python爬取好友qq空间_Python3.6获取QQ空间全部好友列表

    首先要处理的是gtk算法:从上次分析以来代码并没有变 登录QQ空间后搜索gtk字符串,在三个js中出现了 /* |xGv00|e5808eb94a2bdffe3aae60cd22c5efe2 */ d ...

  5. python分析qq好友_Python2.7获取QQ空间部分好友

    首先需要安装curl工具,然后复制curl 参考http://blog..net/gsls200808/article/details/46933307 浏览器打开http://user.qzone. ...

  6. 使用vb脚本实现QQ空间相册好友查验功能

    使用vb脚本实现QQ空间相册好友查验功能 1.思路 a.需要创建一个变量(执行方法) b.需要使用输入框方法,用来接受用户输入的内容 c.给予用户输入的内容进行判断 d.当判断结果为true时,弹出一 ...

  7. Python2.7获取QQ好友头像

    上一篇文章:http://blog.csdn.net/gsls200808/article/details/48108727获取的是空间头像,这一篇直接获取好友头像 获取QQ头像接口 大图 http: ...

  8. java强行访问别人qq空间_疯人院:如何使用javascript来获取QQ空间最近访客好友。...

    在看此文之前,请看: 第一步.先找出获取QQ访客接口: 通过浏览器抓包: 我们可以获取到这个接口https://user.qzone.qq.com/proxy/domain/g.qzone.qq.co ...

  9. Selenium学习——QQ空间点赞好友说说

    项目要求,给自己空间所有好友发的说说点赞&给单个好友所有说说点赞 遇到的问题: 问题一:只能获取头几条说说,其他获取不到原因:"feed_page_container"这个 ...

最新文章

  1. Python 知识点大全,建议收藏留用!
  2. easy-ui表单校验---针对单个字段,多重校验(有参数校验+无参数检验)
  3. idea 查看jsp是否被引用_IntelliJ IDEA解析JSP中的Web路径
  4. 我从#100DaysOfCode中学到的东西
  5. C语言大写字母E转小写e,C语言 大小写字母转换
  6. java安全密钥_Java安全性:密钥大小或默认参数非法?
  7. AI工程师的薪资高得逆天: 2020年,是入坑的最好时机!
  8. 区块链安全:基于区块链网络攻击的方式原理详解
  9. pom文件显示删除线
  10. 车牌识别算法介绍与实践
  11. PHP运行出现502是什么原因,php出现502错误怎么解决
  12. PCF8563实时时钟芯片51单片机简单例程
  13. 深入浅出计算机组成原理(二)——给你一张知识地图,计算机组成原理应
  14. 计算机是怎样跑起来在线看,计算机是怎样跑起来的
  15. 美国大学计算机科学gpa,美国大学gpa计算
  16. 正反馈、负反馈傻傻分不清?看这篇电路深度讲解
  17. expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file
  18. 用 Python 动态模拟太阳系运转
  19. html怎样创建复选框,如何使用可点击标签创建HTML复选框
  20. 【decode()】

热门文章

  1. php 把数组转换成字符串_php怎么将数组转换为字符串
  2. 八 iOS之 CATransition (转场动画)
  3. 年薪百万的java架构师跟普通程序员的技术水平差距在哪里?
  4. 简单工厂模式(思维导图)
  5. vue判断input框中的checkbox(单选)是否为选中状态
  6. Python数据分析与数据化运营(笔记)第一章:python与数据化运营
  7. 基于 Spring、SpringMVC、MyBatis 的熊猫书屋系统
  8. [gpu pro]《正当防卫2》渲染技术
  9. Python+Win32 调用IE浏览器,却弹出360浏览器的解决方法
  10. AssertionError: The input shape (7, 7) is smaller than the window size (12). Please set `pad_smal...