python实现人人自动回复、抢沙发功能
时间:2019-04-17
本文章向大家介绍python实现人人自动回复、抢沙发功能,主要包括python实现人人自动回复、抢沙发功能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近人人上看到有好友总是使用软件抢沙发,便决定用Python也写一个玩玩
一、状态回复表单POST
同样使用chrome开发者工具抓包
红色选择选中部分为必须提交的部分
提交表单的内容
postdata = { 'c': content, #1 你要评论的内容 'owner': owner, #2 该状态的所有者ID 'source': source, #3 该状态的ID 't': 3, #4 这条不用修改 'requestToken': xxx, #5 上图选中部分 '_rtk': 'xxx', #6 上图选中部分 }
二、抢沙发思路
每个20s访问一下人人主页,使用BeautifulSoup抓取data-id(对应owner)、data-source(对应source)
模拟表单提交即可完成抢沙发
TARGET_ID 集合存放需要抢沙发的好友ID(data-id)
REPLY_ID 集合存放已经回复过的状态ID(data-source)
通过上述两个集合保证不重复评论,且只评论指定好友的状态
#coding=utf8 import re import urllib import urllib2 import time from bs4 import BeautifulSoup __author__ = 'SnOw' COOKIE = '你自己COOKIE' HEADERS = {'cookie': COOKIE, 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' } TARGET_ID = set(['5002986XX']) #存放需要抢沙发的好友ID REPLY_ID = set() def load_status(): URL = 'http://www.renren.com/' req = urllib2.Request(URL, headers=HEADERS) page = '' try: page = urllib2.urlopen(req).read() except: print 'urlopen error' soup = BeautifulSoup(page) for i in soup.find_all('figure'): # print i.get('data-id') if i.get('data-id') in TARGET_ID: owner_id = i.get('data-id') source_id = i.get('data-source') if source_id not in REPLY_ID: auto_reply(owner_id, source_id) print i.get('data-id') + ' ' + source_id else: print 'replyed this status' def auto_reply(owner, source): url = 'http://status.renren.com/feedcommentreply.do?fin=0&ft=status&ff_id=' + str(owner) content = '(shafa10) ' + time.strftime('于%H时%M分%S秒') + " ~" postdata = { 'c': content, #1 'owner': owner, #2 'source': source, #3 't': 3, #4 'requestToken': -7683150XX, #5 自己修改 '_rtk': '9df56fXX', #6<span style="white-space:pre;"> </span>自己修改 } req = urllib2.Request(url, urllib.urlencode(postdata), headers=HEADERS) page = urllib2.urlopen(req).read() REPLY_ID.add(source) while True: load_status() time.sleep(20) print time.strftime('%H:%M:%S')
效果图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Stepping.js——两步完成前后端分离架构设计
- 我的职业是前端工程师【十】客户端存储艺术:数据存储与模型
- 【开源】2md:将复制的内容、网页转成 markdown
- React Native 持续部署实践— push 代码构建出新版的 Growth
- 技巧 - 如何好一个 Git 提交信息及几种不同的规范
- React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器
- 微软开源全新的文档生成工具DocFX
- 使用 MimeKit 和 MailKit 发送邮件
- 使用 React Native 重写大型 Ionic 应用后,我们想分享一下这八个经验
- 基于OWin的Web服务器Katana发布版本3
- 【工具推荐】图像界的魔术师 ImageMagick
- 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标
- 如何设计完善的构建系统,为日常开发提速一倍
- 两年 100 期技术周报后,我收获了这四点
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flutter实现可循环轮播图效果
- Android判断登录情况
- linux尝试登录失败后锁定用户账户的两种方法
- Linux内存泄漏检测shell脚本
- 详解Linux系统中网卡MAC地址克隆方法
- linux下日志定时轮询的流程详解
- Vim中查找替换及正则表达式的使用详解
- CentOS 7下部署php7.1和开启MySQL扩展的方法教程
- Ubuntu系统下用Crontab命令定时执行PHP文件详解
- CentOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装
- Linux有限状态机FSM的理解与实现
- Linux下浅谈crond与crontab的命令用法
- centos 7系统下安装Jenkins的步骤详解
- linux tomcat配置https的方法
- Linux 中firewall的使用方法总结