QQ空间自动点赞

  • 前景提要目标确定分析介绍登陆获取cookie寻找XML寻找可变参数获取第一个空间动态寻找点赞所需的URL寻找可变参数功能提升到秒赞全部代码最后还是希望你们能给我点一波小小的关注。奉上自己诚挚的爱心

私信小编01即可获取大量Python学习资料

前景提要

因为我周围的小伙伴们天天跟我说的最多的一句话就是:空间第一条点赞。
所以说我还不如直接做一个自动点赞的代码呢,免得天天催我点赞。


目标确定

  • QQ空间秒赞

分析介绍

登陆获取cookie

首先既然是对 QQ空间的一系列操作,自然是先解决登陆方面,在这篇文章里面我就不过多介绍了,因为我上几期之前对QQ空间已经做了一定的介绍了。直接放出链接就好。欢迎看博主以前的文章

def search_cookie():    qq_number = input('请输入qq号:')    if not __import__('os').path.exists('cookie_dict.txt'):        get_cookie_json(qq_number)    with open('cookie_dict.txt', 'r') as f:        cookie=json.load(f)    return Truedef get_cookie_json(qq_number):    password = __import__('getpass').getpass('请输入密码:')    from selenium import webdriver    from selenium.webdriver.chrome.options import Options    login_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 Truedef get_g_tk():    p_skey = self.cookie['p_skey']    h = 5381    for i in p_skey:        h += (h << 5) + ord(i)        g_tk = h & 2147483647

寻找XML

当我们拿到cookie信息和g_tk这个参数之后,继续去寻找空间好友动态的XML在何处。
首先点到XML位置一个个查找,发现有一个feeds3_html_more很像,点进去发现的确是我们要找的url链接。

寻找可变参数

这个链接所需要的参数有很多,在这里列举出来

  • uin:
  • scope:
  • view:
  • daylist:
  • uinlist:
  • gid:
  • flag:
  • filter:
  • applist:
  • refresh:
  • aisortEndTime:
  • aisortOffset:
  • getAisort:
  • aisortBeginTime:
  • pagenum:
  • externparam:
  • firstGetGroup:
  • icServerTime:
  • mixnocache:
  • scene:
  • begintime:
  • count:
  • dayspac:
  • sidomain:
  • useutf8:
  • outputhtmlfeed:
  • rd:
  • usertime:
  • windowId:
  • g_tk:
  • qzonetoken:
  • g_tk:

这些参数中类似于可变参数的一共有五个。

  • qzonetoken
  • windowId
  • rd
  • usertime
  • g_tk
  1. qzonetoken 参数在源码中是个可变的“定值”,因为每次刷新这个参数都会变,但是源码中却给出了他的具体值。直接获取即可。
def get_space():    your_url = 'https://user.qzone.qq.com/' + str(qq_number)    html = requests.get(your_url,headers=headers,cookies=cookie)    if html.status_code == 200:        qzonetoken = re.findall('window.g_qzonetoken =(.*?);',html.text,re.S)[1].split('"')[1]    return True
  1. windowId 与 rd 虽说每次刷新结果都不同,但是经过博主多次实验得出,这两个参数对整体并没有什么影响,可以直接抄下来。
'rd': '0.9311604844249088','windowId': '0.51158950324406',
  1. usertime 参数看似很眼熟,是个时间戳参数,因为位数不对,说明应该是被放大了一千倍。
'usertime': str(round(time.time() * 1000)),
  1. g_tk 参数上次教程已给出。在JavaScript中分析即可获得。
def get_g_tk():    p_skey = self.cookie['p_skey']    h = 5381    for i in p_skey:        h += (h << 5) + ord(i)        g_tk = h & 2147483647

获取第一个空间动态

我们拿到XML以及各个参数后,即可访问该网页获取其返回值了。
但是这个返回与其他的有一些不同的是,它不仅仅是个json文件,我们无法获取后直接转换成字典格式去给我们使用,这就很麻烦。

我们获取字符串后,首先先将前后不一致的都切片扔掉,之后经过一系列处理后发现,我们很难将这个看似像json格式的字符串转换成字典。
在这里我继续介绍一个第三方库demjson。

demjson 可以解決不正常的json格式数据

demjson的使用方法很简单。

encode将 Python 对象编码成 JSON 字符串decode将已编码的 JSON 字符串解码为 Python 对象

# 例子# -*- coding: utf-8 -*-import demjsonjs_json = "{x:1, y:2, z:3}"py_json1 = "{'x':1, 'y':2, 'z':3}"py_json2 = '{"x":1, "y":2, "z":3}'data = demjson.decode(js_json)print(data)# {'y': 2, 'x': 1, 'z': 3}data = demjson.decode(py_json1)print(data)# {'y': 2, 'x': 1, 'z': 3}data = demjson.decode(py_json2)print(data)# {'y': 2, 'x': 1, 'z': 3}

我们使用demjson直接将该字符串转换为耳熟能详的字典格式,提取其中的data的data,即为前八条动态的每个参数,但我们这里只要第一个说说的动态信息。

text = html.text[10:-2].replace(" ", "").replace('','')json_list = demjson.decode(text)['data']['data']qq_spaces = json_list[0]

我们拿到其信息后,先提取一些我们比较想知道的东西,比如名字、QQ号、发布时间、所获赞数、说说内容、说说地址等等结果。
在 qq_spaces 参数中我们发现里面有一个很长也很特殊的一个结果是 html 结果,这个结果里面很长,简单来看是个网页常规代码,应该是被JavaScript写入到网页中了,既然不是全部代码,那么只能用正则提取一下里面的具体我们需要的东西了。

content = str(qq_spaces['html'])try:zanshu = re.findall('(.*?)人觉得很赞

',content,re.S)[0]except:return Nonetime_out = str(qq_spaces['feedstime'])print("名字:"+str(qq_spaces['nickname']))print("QQ号:"+str(qq_spaces['opuin']))print("时间:"+time_out)print('赞数:'+zanshu)times = qq_spaces['abstime']his_url = re.findall('data-curkey="(.*?)"',content,re.S)[0]

y空间兑换代码_Python爬虫实战:QQ空间全自动点赞工具相关推荐

  1. python二手交易平台代码_PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)...

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  2. python实例豆瓣音乐代码_Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细

    前言 首先我们先来回忆一下上两篇爬虫实战文章: 第一篇:讲到了requests和bs4和一些网页基本操作. 第二篇:用到了正则表达式-re模块 今天我们用lxml库和xpath语法来爬虫实战. 1.安 ...

  3. python qq空间 上传_Python爬虫获取QQ空间信息(上)

    开发工具 Python版本:3.6.4 相关模块: requests模块: selenium模块: lxml模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip ...

  4. python爬虫爬取图片代码_python爬虫实战 爬取天极图片

    学习爬虫个人的意见是直接实战效果会很好 不要等全学完requests ,正则表达式,BeautifulSoup等再来实际操作.其实很多实战我们并不会用到requests库,BeautifulSoup, ...

  5. html怎么上传qq空间,手机上传视频到qq空间

    又近年关,各种聚会过后手机上是不是遗留了很多照片跟各种短片视频了,也许怎么导出分享照片大家都会比较了解,但是手机拍的视频放到电脑或者说手机拍的视频怎么上传到空间呢,这些估计有些手机小白还是不太懂, 现 ...

  6. python访问陌生人qq空间_Python爬虫获取QQ空间信息(上)

    开发工具 Python版本:3.6.4 相关模块: requests模块: selenium模块: lxml模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip ...

  7. Python爬虫实战:QQ空间全自动点赞工具

    QQ空间自动点赞 前景提要 目标确定 分析介绍 登陆获取cookie 寻找XML 寻找可变参数 获取第一个空间动态 寻找点赞所需的URL 寻找可变参数 功能提升到秒赞 全部代码 最后还是希望你们能给我 ...

  8. y空间兑换代码_动态空间面板模型教程(一文读懂动态面板空间spregdpd操作应用)...

    1 动态空间面板模型命令spregdpd 动态空间面板模型命令为spregdpd,语法格式为: spregdpd depvar indepvars [weight] , nc(#) wmfile(we ...

  9. python qq空间 上传_Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱...

    这个文章主要是在前一篇文章上新增了说说秒赞的功能 前一篇文章可以了解一下 那么,这次主要功能就是 监控女神的 QQ空间,一旦女神发布新的说说,马上点赞,你的邮箱马上就会收到说说内容,是不是想了解一下 ...

最新文章

  1. iOS LLDB调试命令(Low Lever Debug)
  2. 敏捷团队中的QA由来
  3. php 缺少参数,php - 如何验证JSON响应中是否缺少参数-Laravel 6 - 堆栈内存溢出
  4. 使用快嘉框架开发项目示例
  5. glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器
  6. batocera游戏整合包_FIFAol3头像包整合
  7. js 判断 ““,null,undefined
  8. apipost 如何分享多个接口
  9. 在pascal环境下学习record
  10. 【自用】Android 切割Bitmap为多个小的Bitmap
  11. LeetCode 84. Largest Rectangle in Histogram
  12. linux racoon代码,源代码安装IPsec-Tools-0.7.2
  13. 结构体中的map尽量使用指针,否则不要使用memset
  14. PyCharm学习笔记04:PyCharm 键盘映射和快捷键 - Keymap Shortcuts
  15. 游戏手柄延迟测试软件,六款免费网络延迟测试工具
  16. python正弦波叠加方波_电赛初探(一)——正弦波、方波、锯齿波转换
  17. win10 笔记本 右下角出现 天气的解决办法
  18. react后台管理项目
  19. PostgreSQL数据库WAL——RM_HEAP_ID日志记录动作
  20. MeteoInfoLab脚本示例:站点填图

热门文章

  1. netty 压缩比_使Netty 4中的HTTP内容压缩工作
  2. 使用Spock Mocks进行Grails 3.3集成测试
  3. 什么是javax.ws.rs.core.context? [ 第1部分 ]
  4. Java垃圾收集器:G1GC何时将CMS强制退出?
  5. 自定义java线程池_我的Java自定义线程池执行器
  6. jax-rs jax-ws_JAX-RS Bean验证错误消息国际化
  7. 再见c罗再见梅西_再见,再见,5 * 60 * 1000 //五分钟,再见,再见
  8. Java EE 7中的WebSocket客户端API
  9. Gradle入门:集成测试
  10. 将jOOQ与JDBC比较