前景提要

最近发现有人QQ空间对我展开了屏蔽,咱们也不知道怎么惹到人家了,一气之下写了一个小爬虫看看到底谁把我屏蔽了。写小本本记下来!!!

准备工作

python环境:
python3.7.4第三方库环境:
requests
lxml
threadpool
selenium

利用selenium模拟登陆获取cookie并保存到本地

def search_cookie(): # 先检测一下是否运行过if not __import__('os').path.exists('cookie_dict.txt'):get_cookie_json()with open('cookie_dict.txt', 'r') as f:cookie=json.load(f)return cookiedef get_cookie_json(): # 无头selenium登陆qq_number = input('请输入qq号:')password = __import__('getpass').getpass('请输入qq密码:')from selenium import webdriverlogin_url = 'https://i.qq.com/'chrome_options =Options()chrome_options.add_argument('--headless')driver = webdriver.Chrome(options=chrome_options)driver.get(login_url)driver.switch_to_frame('login_frame')driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()time.sleep(1)driver.find_element_by_xpath('//*[@id="u"]').send_keys(qq_number)driver.find_element_by_xpath('//*[@id="p"]').send_keys(password)time.sleep(1)driver.find_element_by_xpath('//*[@id="login_button"]').click()time.sleep(1)cookie_list = driver.get_cookies()cookie_dict = {}for cookie in cookie_list:if 'name' in cookie and 'value' in cookie:cookie_dict[cookie['name']] = cookie['value']with open('cookie_dict.txt', 'w') as f:json.dump(cookie_dict, f)return True

找到查看好友的接口

进入我的空间,点击 F12 检查界面,将 Network 清空后点击好友界面。

首选盲猜好友列表含有friend字段。直接选择搜索发现出来一些数据,挨个查找之后发现好友字段。保存当前获得的 url 供日后查询。

破解data里面的加密参数


看到只有一个 g_tk 加密参数就很激动,就一个加密!

去 Sources 里面搜索 g_tk 取值到底是什么加密,发现是个函数点进去看后发现是个简单的小加密。可以写 python 代码。

Python代码如下:

def get_g_tk(): # QQ空间的加密算法p_skey = cookie['p_skey']h = 5381for i in p_skey:h += (h << 5) + ord(i)g_tk = h & 2147483647return g_tk

在QQ空间好友栏获取好友列表

拿到加密参数后,接下来我们就只需要进刚才所说的空间好友栏页面将所有的好友的QQ号抓下来,用urllib.parse.urlencode(data)将参数转成我们常见的url后面缀了一长串&&&的形式与原始链接拼接,然后就可以带上cookies发送请求获取json数据。

def get_friends_uin(g_tk): # 获得好友的QQ号信息yurl = 'https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?'data = {'uin': cookie['ptui_loginuin'],'do': 1,'g_tk': g_tk}url = yurl + urllib.parse.urlencode(data)res=requests.get(url, headers = headers, cookies = cookie)r = res.text.split('(')[1].split(')')[0]friends_list=json.loads(r)['data']['items_list']friends_uin=[]for f in friends_list:friends_uin.append(f['uin'])return friends_uin

找到屏蔽我的狠人

拿到好友的QQ号之后,咱们就能直接访问好友的空间了,但是好友设置了拒绝访问,一定要拿小本本记下来!

def get_blacklist(friends): # 查询被挡好友的QQ号,用小本本记下来!access_denied=[] # 拉黑笔记,小本本记下来!yurl = 'https://user.qzone.qq.com/'for friend in friends:print("开始检查:"+str(friend))url = yurl + str(friend)res = requests.get(url,headers=headers,cookies=cookie)tip = etree.HTML(res.text).xpath('/html/body/div/div/div[1]/p/text()')if len(tip) > 0:#if tip[0][:7] == "主人设置了权限":print(str(friend)+"把我拉黑了!")access_denied.append(friend)return access_denied

秃然好心寒

其实看到这,我就有点心寒了。。。。

拉黑这帮重色轻友的人!

进入自己心灵想进去的地方,拉黑他们!

发现只有一个 post 请求,那应该就只能是这个了。

看了眼所需要的参数,自己的号,拉黑的号,自己的空间,加上一个无用参数和刚才所获得加密参数。

越想越气,写代码!

def pull_black(): # 拉黑,必须拉黑!global cookiecookie = search_cookie()with open('access_denied.txt', 'r') as f:access_denied = f.readlines()for fake_friend in access_denied:fake_friend = fake_friend.split('\n')[0]yurl = "https://user.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/right/cgi_black_action_new?"g_tk = get_g_tk()url_data = {'g_tk': g_tk}data = {'uin': cookie['ptui_loginuin'],'action': '1','act_uin': fake_friend,'fupdate': '1','qzreferrer': 'https://user.qzone.qq.com/1223411083'}url = yurl + urllib.parse.urlencode(url_data)res=requests.post(url, headers = headers, data=data, cookies = cookie)print(str(fake_friend)+"已被您拉黑")print("都拉黑了!解气!!")

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_45414559/article/details/107733745

全部代码

如果对本文内容感兴趣,可以添加小二微信:ityard,备注QQ

免费获取本文源码

长按识别上方二维码添加小二微信

用 Python 找出了拉黑 QQ 空间屏蔽我的大人物相关推荐

  1. Python爬虫实战,拉黑 QQ 空间屏蔽我的“大人物“

    前景提要 最近发现有人QQ空间对我展开了屏蔽,咱们也不知道怎么惹到人家了,一气之下写了一个小爬虫看看到底谁把我屏蔽了.写小本本记下来!!! 代码在最尾部,需要请自取. 很多人学习python,不知道从 ...

  2. 爬虫实战--拉黑 QQ 空间屏蔽我的“大人物“

    前景提要 最近发现有人QQ空间对我展开了屏蔽,咱们也不知道怎么惹到人家了,一气之下写了一个小爬虫看看到底谁把我屏蔽了.写小本本记下来!!! 代码在最尾部,需要请自取. 准备工作 python环境: p ...

  3. Python找出列表中出现次数最多的元素三种方式

    通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...

  4. python批量删除微信好友_我用 Python 找出了删除我微信的所有人并将他们自动化删除了...

    1. 概述 不知你是否遇到过在微信上给通讯录中的某个人发消息,结果出现了这一幕: 平时一直认为自己的心里素质过硬,不过遇到这种情况 ... 在我缓了半个钟头(半分钟)之后,缓缓拿出了手机,打开微信,找 ...

  5. 在哪里能收到python实例代码-Python找出最小的K个数实例代码

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复 ...

  6. linux 端口tnpl,利用Python找出9个连续的空闲端口

    这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下 一.项目需求 安装某软件,配置时候需要填写空闲的端口.查看5个平台的某个端口是否被占用 5个平台为window ...

  7. python找出某个文件夹下某个后缀的文件

    python找出某个文件夹下某个后缀的文件 import osdef find_files_with_suffix(folder_path, suffix):# 使用os模块获取文件夹中所有文件的路径 ...

  8. python找最长的单词,Python 找出英文单词列表(list)中最长单词链

    这篇文章主要介绍了Python 找出英文单词列表(list)中最长单词链,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本文主要 ...

  9. Python -- 找出100以内的所有质数

    Python – 找出100以内的所有质数 质数:除了1和本身没有其他因数 i=2 for i in range(2,100): # 取i从2开始,2 最小的质数for j in range(2,i) ...

最新文章

  1. Pandas 基础 (4)—— 汇总和计算描述统计
  2. 开源人工智能使用卷积网格自动编码器生成3D面部
  3. 支持Windows 7的CAD—AutoCAD Civil 3D 2010
  4. Java StringBuilder神话被揭穿
  5. c++类模板及参数类型的运行时判断
  6. 8位两院院士、20位长江、杰青……这个学院厉害了!
  7. latex插入图片之后出现大段空白,并且紧随其后的文字如同被覆盖一般不见了
  8. GET POST方法长度限制
  9. 郁闷的.net程序员与坑爹的.net 4 client profile
  10. 清理SharePoint 2010的SQL Server 2008 R2日志数据库的方法
  11. 前端pdf禁止下载功能
  12. 好的软件测试的简历是什么样的?
  13. chromeos java安装_试用额外硬件驱动和完整JAVA支持的ChromeOS
  14. 生猪价格matlab,猪肉价格的数学模型.doc
  15. 先验 超验_什么是先验、超验、后验?
  16. 项目邮件[置顶] 失业的程序员(十二):潜意识的智商
  17. 小米路由红包显示无法找到服务器,小米路由器找不到硬盘怎么办 小米路由器访问不到硬盘的解决办法...
  18. 飞流直下兄弟连,疑似项目化云烟
  19. 新零售SaaS架构:多租户系统架构设计
  20. 学生学籍管理系统 java_学生学籍管理系统JAVA+SQL.docx

热门文章

  1. 联想拯救者p7000C语言编译器,联想拯救者 刃7000P台式机装win10系统及bios设置方法...
  2. 【cocos2d-js】监听双击
  3. 成功并不是总要劳其筋骨,饿其体肤,成功的密码是: 专注!
  4. 学习英文:加菲猫的经典语录
  5. 除了《千与千寻》,宫崎骏漫画的花卉治愈了观众,而花艺学院治愈了你一片温情
  6. 22-23 - 页式内存管理
  7. java 定时凌晨_java Timer 定时每天凌晨1点执行任务
  8. 2022.5.25 FreeSurfer入门练习:Recon-all
  9. 大脑衰老可逆转,只需注入年轻脑脊液,“返老还童”登Nature
  10. nrf52+RFX2401的PA+LNA方案,基于softdevice驱动