用python写个脚本把QQ空间多年动态删了

讲真的,我在写这个脚本的时候,我还没把python的基本语法都了解了。我只能说,语言不重要,好用就行。。。

至于为什么想删QQ动态,只是不想老是看到那年今日那些曾经发的很幼稚的话,动态又多(虽然这几年已经不用QQ了),用手太费劲,就想写个脚本自动处理了。

要想删除所有动态,我需要做2件事:

1. 获取所有的动态信息

2. 获取删除的url,遍历已经获取的所有动态,然后全部删除了就行。

另外,这有一个大前题:需要先获取到会话信息。这个简单,毕竟是自己的QQ,直接登录然后,浏览器上什么不都有了。

当然,这说起来简单,做起来嘛。。。。。。。也挺简单。

我本来是想用shell解决的,后来抓下动态信息,发现是个json。我想了想,觉得python应该好用点(赶紧先用俩小时研究下python语法)。

下面开始了:

1. 登录QQ空间,点击说说,首先要找到可以获取动态信息列表的url。这里我就直说我的分析结果了,在动态下面有个页码,点击的时候的url就是,下面给个示例:

https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=763795151&inCharset=utf-8&outCharset=utf-8&hostUin=763795151&notice=0&sort=0&pos=840&num=20&cgi_host=http%3A%2F%2Ftaotao.qq.com%2Fcgi-bin%2Femotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=635656033&qzonetoken=8f1208fd31ba56f14fb6f71f498501c179fde08e0a6866589e12672dc8fe8c2af00b924c63f35c

大概就是上面这个样子,里面有两个参数,pos:从第几条开始,num:获取几条。需要的时候调整这两个参数的值即可。

然后,把这个url在浏览器上发个请求,我用的谷歌。然后把请求头、cookie等信息都拿出来。根据pos和num的值就可以获取到动态信息。返回的结果是一个字符串,掐头去尾就剩中间的部分就是个Json字符串了。我已经删除完了,也不给示例了,我直接描述这个字符串了,这个json串中有个字段msglist是个列表,可能为空,在不空的时候,每个值有个字段是tid,tid的值就是我们删除这条动态的时候需要用的一个查询参数。把每条动态的tid保存起来,后面遍历删除即可。

2. 获取删除的url。这个操作很简单,删除一个,然后把删除的请求信息拿出来就行(查看浏览器)。这个是个post方法,拿到删除时候用到的url、请求头、cookie、请求参数。然后配置好。

3. 遍历1中获取的所有tid,然后设置每个tid为要删除的请求中参数,依次删除即可。

倒是不复杂,没多少技术含量。下面贴下我的实现,毕竟第一次用python,也不知道姿势对不对。

代码:

#! /usr/bin/python

import requests
import re
import json

#总共要删除的动态数
total=840
limit=10
pages=total/limit
start_pos=2
tids=[]
#文中说的掐头去尾就是json,所以这里用个正则处理
pattern=re.compile(r'^_Callback\((.*)\);$')
#获取所有动态的tid
cookie="换成自己浏览器中的cookie信息"
#请求头
request_headers={'authority':'h5.qzone.qq.com','method':'GET','path':'/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=763795151&inCharset=utf-8&outCharset=utf-8&hostUin=763795151&notice=0&sort=0&pos=820&num=40&cgi_host=http%3A%2F%2Ftaotao.qq.com%2Fcgi-bin%2Femotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=1874324779&qzonetoken=98cd2ff9067f620f90a72cbe07da56012b4593659ebbf1deba0b350e82d53be364cd48d038e7ca','scheme':'https','accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','accept-language':'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','cache-control':'max-age=0','cookie':cookie, 'upgrade-insecure-requests':'1'}
def getTids(say_list_url):
    res=requests.get(say_list_url, headers=request_headers)
    text=pattern.findall(res.text)[0]
    resolveTid(text)
    print "tid len: %d" % (len(tids))
    
def resolveTid(text):
    jsonObj=json.loads(text)
    if  not jsonObj.has_key('msglist') :
        print text
        return False
    msglist=jsonObj['msglist']
    if  msglist is None :
        return False
    for msg in msglist:
        print "tid: %s" % (msg['tid'])
        tids.append(msg['tid'])

for page in range(pages):
    num=limit*page
    #动态设置pos和num值来获取所有的说说信息
    say_list_url="https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=763795151&inCharset=utf-8&outCharset=utf-8&hostUin=763795151&notice=0&sort=0&pos=%d&num=%d" % (start_pos+num, limit) + "&cgi_host=http%3A%2F%2Ftaotao.qq.com%2Fcgi-bin%2Femotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=1168850316&qzonetoken=87520ec2a71a9f349d23d7e462ffdef0bc3075786bc42114239de62af56e92ca85ccb2eb098144" 
    getTids(say_list_url)

print "total: %d" % (len(tids))
print "start delete..."

#删除说说的url,换成自己的
delete_url="https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_delete_v6?qzonetoken=fc557d5f5542fbb951479b8e8b2f1a0f163db952eb44cef275261b76b758edeb51c34834c16f80&g_tk=597814207"
delete_cookie="换成自己的浏览器的cookie"
#换成自己的
delete_headers={'authority':'user.qzone.qq.com','method':'POST','path':'/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_delete_v6?qzonetoken=9a40f79cdd9908ccbd41466b3b2276314f155525357ae4fb8a7d90093f6379e5144d31eefeabc6&g_tk=597814207','scheme':'https','accept':'*/*','accept-language':'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','content-length':'178','content-type':'application/x-www-form-urlencoded;charset=UTF-8','origin':'https://user.qzone.qq.com','referer':'https://user.qzone.qq.com/763795151/311', 'cookie': delete_cookie, 'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36'}
body={'hostuin':'763795151','t1_source':'1','code_version':'1','format':'fs','qzreferrer':'https://user.qzone.qq.com/763795151/311','tid':''}
for tid in tids:
    body['tid']=tid
    print body
    dr=requests.post(delete_url, data=body, headers=delete_headers)
    print dr

如果会话信息太久失效了,就重新登录更新下,做web都明白这个。如果出现403,那就是配置不正确,确认请求头、cookie、url都不要复制错了。

这算是我用python写的第一个程序了。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以给你一些关于如何使用Python来编写脚本的基本指导:1. 了解Python的基本结构;2. 使用编辑器创建Python脚本文件;3. 使用Python语句编写脚本;4. 使用Python标准库和第三方库来实现脚本功能;5. 调试和测试脚本;6. 将脚本部署到生产环境中。 ### 回答2: Python是一种简单易学的编程语言,适用于编写各种类型的脚本。以下是一个示例脚本的编写步骤: 1. 导入所需模块:在Python中,我们可以使用import语句来导入需要使用的模块。例如,如果我们需要使用日期和时间相关的功能,可以导入datetime模块。 2. 编写主要功能代码:根据脚本的需求,编写实现所需功能的代码。例如,我们可以编写一个输出当前日期和时间的脚本。 3. 定义函数(可选):如果脚本中包含一些可以重复使用的功能代码,可以将其封装为函数。这样可以提高代码的可读性和可维护性。 4. 处理输入输出:根据脚本的需求,添加代码来处理用户的输入和输出。例如,可以使用input函数获取用户输入的数据,并使用print函数将结果输出到控制台。 5. 执行脚本:在脚本的最后,通过在主函数中调用其他函数或直接执行主要功能代码,来执行脚本。 以下是一个简单示例脚本,用于实现获取用户的姓名并输出问候语的功能: ``` def get_name(): name = input("请输入您的姓名:") return name def say_hello(name): print("你好," + name + "!欢迎使用本脚本。") def main(): name = get_name() say_hello(name) if __name__ == "__main__": main() ``` 在这个示例脚本中,首先通过get_name函数获取用户输入的姓名,然后将其传递给say_hello函数输出问候语。在main函数中,我们将这两个函数连接起来,并通过调用main函数来执行脚本。通过这个示例,你可以了解到如何用Python写一个脚本,并根据实际需求进行修改和扩展。 ### 回答3: 当然可以用Python编写一个脚本Python是一种简单易用的编程语言,适合初学者和经验丰富的开发人员使用。下面是一个简单的示例脚本: ```python # 这是一个示例脚本,用来计算两个数字的和 # 定义函数,接收两个数字作为参数,并返回它们的和 def add_numbers(num1, num2): return num1 + num2 # 获取用户输入 number1 = int(input("请输入第一个数字:")) number2 = int(input("请输入第二个数字:")) # 调用函数,计算两个数字的和 result = add_numbers(number1, number2) # 打印结果 print("两个数字的和是:", result) ``` 在这个示例脚本中,我们定义了一个函数`add_numbers`,用来计算两个数字的和。然后,我们通过`input`函数获取用户输入的两个数字,并将它们传递给`add_numbers`函数进行计算。最后,我们使用`print`函数打印出计算结果。 这只是一个简单的示例,Python的功能非常强大,可以用来完成各种任务,例如数据处理、网络编程、机器学习等。希望这个简单的示例能帮助你开始编写Python脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不识君的荒漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值