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 ...
随机推荐
- mode(BZOJ 2456)
Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...
- 16.1113 模拟考试T2
测试题 #4 括号括号[问题描述]有一个长度为?的括号序列,以及?种不同的括号.序列的每个位置上是哪种括号是随机的,并且已知每个位置上出现每种左右括号的概率.求整个序列是一个合法的括号序列的概率.我们 ...
- Android 获取屏幕事件的坐标
通常情况下我们只能获取当前Activity的画面坐标,那有时候我们需要做到一种类似于c++ hook的后台运行程序能够监听到前台用户的操作并记录下来,往往这类程序都是为自动化测试服务的. Androi ...
- Laravel 5.1 简单学习
Laravel 5.1 简单学习 (1)Laravel的nginx配置,不配置或者配置错误,可能会报404或500错误,访问不到页面. location / { try_files $uri $uri ...
- android获取手机号
private String getPhoneNum(){ //与手机建立连接 TelephonyManager tm = (TelephonyManager)getSystemService(Con ...
- Struts2的标签三大类是什么?
Struts2 标签 一 Struts标签的简介: Struts2 自己封装了一套标签,比 JSTL 强大,而且与 Struts2 中的其他功能无缝结合. 当然 Strust2 标签的内容很多,随着版 ...
- Java日志框架-Spring中使用Logback(Spring/Spring MVC)
继上一篇文章http://www.cnblogs.com/EasonJim/p/7800880.html中所集成的是基于Java的普通项目,如果要在Spring和Spring MVC上集成,需要做如下 ...
- amplab
https://github.com/amplab/SparkNet https://amplab.cs.berkeley.edu/
- SQL Server 存储字符数较大字段的问题
SQL Server 2000专门提供了处理text,ntext,image字段的函数,他们是: TEXTPTR TEXTVALID READTEXT UPDATETEXT WRITETEXT 一般作 ...
- C#-訪问轰炸机,新建进程,结束进程...(ConsoleApp)---ShinePans
这个程序能够自己主动打开要打开的网址,而且自己主动结束进程,这样能够达到博文点击流量的添加 program.cs using System; using System.Collections.Gene ...