python模拟登陆discuz论坛
#! /usr/bin/env python
# -*- coding: utf-8 -*- import urllib2, urllib, cookielib, re, time
class Robot(object):
def __init__(self, forumUrl, userName, password, proxy = None):
''' 初始化论坛url、用户名、密码和代理服务器 '''
self.forumUrl = forumUrl
self.userName = userName
self.password = password
self.formhash = ''
self.isLogon = False
self.isSign = False
self.xq = ''
self.jar = cookielib.CookieJar()
if not proxy:
self.openner = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.jar)) #设置cookie变量
else:
self.openner = urllib2.build_opener(
urllib2.HTTPCookieProcessor(self.jar),
urllib2.ProxyHandler({'http' : proxy}))
urllib2.install_opener(openner)
def login(self):
''' 登录论坛 '''
url = self.forumUrl + "/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1";
#登陆地址与下面的回帖地址至关重要,我这里用个的fiddler工具抓包获取的webforms的数据
postData = urllib.urlencode({
'username': self.userName,
'password': self.password,
'answer': '',
'cookietime': '',
'handlekey': 'ls',
'quickforward': 'yes',
'fastloginfield': 'username'
})
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/49.0.2623.112'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(url,data=postData,headers=headers)
content = self.openner.open(req).read() #使用cookie去访问页面,并保存cookie到变量,后面访问其他页面会使用
#print content
if str(11040) in content:
self.isLogon = True
print 'logon success!'
self.initFormhashXq()
else:
print 'logon faild!'
def initFormhashXq(self):
''' 获取formhash'''
content = self.openner.open(self.forumUrl + '/bbs/forum.php?mod=viewthread&tid=39765&extra=page%3D1').read().decode('utf-8')
#self.openner为上面保存到的cookie变量值,通过它可以去访问其它页面。这里的页面是一个帖子的地址。随意找的一个 为了获取formhash值
#print content
rows = re.findall(r'<input type=\"hidden\" name=\"formhash\" value=\"(.*?)\" />', content) #正则匹配找到formhash值
if len(rows)!=0:
self.formhash = rows[0]
print 'formhash is: ' + self.formhash
else:
print 'none formhash!'
def reply(self, tid, subject = u'',msg = u'支持玉树临风,人见人爱的高先生~~嘻嘻'):
''' 回帖 '''
url = self.forumUrl + '/bbs/forum.php?mod=post&action=reply&fid=822&tid={}&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1'.format(tid)
#url为要回帖的地址
postData = urllib.urlencode({'formhash': self.formhash,
'message': msg.encode('utf-8'),
'subject': subject.encode('utf-8'),
'posttime':int(time.time()) })
#定义一个postdata数据
req = urllib2.Request(url,postData)
content = self.openner.open(req).read().decode('utf-8')
#print content
if u'发布成功' in content:
print 'reply success!'
else:
print 'reply faild!'
if __name__ == '__main__':
robot = Robot('http://192.168.150.1', 'admin', 'admin')
robot.login()
robot.reply(39765)
说明:到此已实现论坛的自动登录回帖功能,由于图片上传不了很多细节没描述清楚,有问题可以加群244844732(群刚创建)交流
python模拟登陆discuz论坛的更多相关文章
- Python模拟登陆新浪微博
上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...
- Python模拟登陆万能法-微博|知乎
Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...
- Python模拟登陆TAPD
因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...
- Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...
- Python模拟登陆某网教师教育网
本文转载自看雪论坛[作者]rdsnow 不得不说,最近的 Python 蛮火的,我也稍稍了解了下,并试着用 Python 爬取网站上的数据 不过有些数据是要登陆后才能获取的,我们每年都要到某教师教育网 ...
- python模拟登陆知乎并爬取数据
一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...
- python 模拟登陆,请求包含cookie信息
需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...
- python模拟登陆之下载
好长时间没有更新博客了,哈哈. 今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到web! 中间涉及到的技术点有: 模拟登陆 ...
- Android HttpClient自己主动登陆discuz论坛!
你登陆论坛的时候,我们先看看浏览器干了什么事儿: 用Firefox打开HiPda 的登陆页面,输入用户名和password,点登陆. 以下是通过firebug插件获取的数据: 能够看到浏览器这个htt ...
随机推荐
- Ionic1与Ionic2
1.Ionic2新特性 ①组织结构与框架: 在Ionic2中,每个组件.页面都只专注于做一件事,它单独有自己的一个目录,有自己的类(Class).模板文件(Template)和自己的样式文件(在这里我 ...
- mysql 插入replace改变原有数据某些字段
完整原型:(主要看下面例子) replace into rpt_ci_cinema_seller_shift_dt ( BIZ_DATE,CINEMA_CD,SELLER_CD,LOCATION_CD ...
- Android SurfaceView与View
SurfaceView介绍 SurfaceView是视图(View)的继承类,这个视图里面内嵌了一个专门用于绘制的Surface.你可以控制这个Surface的格式和尺寸,而SurfaceView控制 ...
- Lucene 6.5.0 入门Demo
Lucene 6.5.0 要求jdk 1.8 1.目录结构: 2.数据库环境: private int id; private String name; private float price; pr ...
- Redis命令行之List
一.Redis之List简介 1. List是简单的字符串列表,按照插入顺序排列. 2. 一个列表最多可存储232-1个元素(40多亿). 二.Redis之List命令行操作 Lrange:获取列表指 ...
- android 禁止ViewPager滑动
最近项目中,有个需求就是要禁止ViewPager滑动事件,我们看下360手机助手的界面,风格就类似这样的 大家如果使用过360手机助手就会发现中间内容是不可以滑动的,现在写一个demo,讲下怎么禁止V ...
- 数据库数据导出CSV文件,浏览器下载
直接上代码: def download(request): # 从数据库查询数据 data_list = Info.objects.all() # 定义返回对象 response = HttpResp ...
- Delphi使用进行post数据时超时设置
因项目需要进行http的post提交数据,开始时用indy的idHttp组件,但是测试时发现当网络中断(如拔掉网线),idHttp的超时设置无效果,要等20秒才提示超时(参考网上的做法,将indy9升 ...
- 什么是 Linux 发行版
什么是Linux的发行版 就Linux的本质来说,它只是操作系统的核心,负责控制硬件.管理文件系统.程序进程等,并不给用户提供各种工具和应用软件.所谓工欲善其事,被必先利其器,一套在优秀的操作系统核心 ...
- 洛谷——P2074 危险区域
P2074 危险区域 题目背景 一个恐怖组织在一座城市中安放了定时炸弹,其威力巨大,现在这里的警长想知道最坏的情况下会有多少街区受威胁. 题目描述 在一个城市有N*M个街区,每个街区由坐标描述,如图所 ...