1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import urllib2, urllib, cookielib, re, time
  5. class Robot(object):
  6. def __init__(self, forumUrl, userName, password, proxy = None):
  7. ''' 初始化论坛url、用户名、密码和代理服务器 '''
  8. self.forumUrl = forumUrl
  9. self.userName = userName
  10. self.password = password
  11. self.formhash = ''
  12. self.isLogon = False
  13. self.isSign = False
  14. self.xq = ''
  15. self.jar = cookielib.CookieJar()
  16. if not proxy:
  17. self.openner = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.jar)) #设置cookie变量
  18. else:
  19. self.openner = urllib2.build_opener(
  20. urllib2.HTTPCookieProcessor(self.jar),
  21. urllib2.ProxyHandler({'http' : proxy}))
  22. urllib2.install_opener(openner)
  23.  
  1.   def login(self):
  2. ''' 登录论坛 '''
  3. url = self.forumUrl + "/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1";
  4. #登陆地址与下面的回帖地址至关重要,我这里用个的fiddler工具抓包获取的webforms的数据
         postData = urllib.urlencode({
  5. 'username': self.userName,
  6. 'password': self.password,
  7. 'answer': '',
  8. 'cookietime': '',
  9. 'handlekey': 'ls',
  10. 'quickforward': 'yes',
  11. 'fastloginfield': 'username'
  12. })
  13. user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/49.0.2623.112'
  14. headers = { 'User-Agent' : user_agent }
  15. req = urllib2.Request(url,data=postData,headers=headers)
  16. content = self.openner.open(req).read()    #使用cookie去访问页面,并保存cookie到变量,后面访问其他页面会使用
  17. #print content
  18. if str(11040) in content:
  19. self.isLogon = True
  20. print 'logon success!'
  21. self.initFormhashXq()
  22. else:
  23. print 'logon faild!'
  1.   def initFormhashXq(self):
  2. ''' 获取formhash'''
  3. content = self.openner.open(self.forumUrl + '/bbs/forum.php?mod=viewthread&tid=39765&extra=page%3D1').read().decode('utf-8')
  4. #self.openner为上面保存到的cookie变量值,通过它可以去访问其它页面。这里的页面是一个帖子的地址。随意找的一个 为了获取formhash值
        #print content
  5. rows = re.findall(r'<input type=\"hidden\" name=\"formhash\" value=\"(.*?)\" />', content) #正则匹配找到formhash值
  6. if len(rows)!=0:
  7. self.formhash = rows[0]
  8. print 'formhash is: ' + self.formhash
  9. else:
  10. print 'none formhash!'
  1.   def reply(self, tid, subject = u'',msg = u'支持玉树临风,人见人爱的高先生~~嘻嘻'):
  2. ''' 回帖 '''
  3. 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)
  4. #url为要回帖的地址
         postData = urllib.urlencode({'formhash': self.formhash,
  5. 'message': msg.encode('utf-8'),
  6. 'subject': subject.encode('utf-8'),
  7. 'posttime':int(time.time()) })
         #定义一个postdata数据
  8. req = urllib2.Request(url,postData)
  9. content = self.openner.open(req).read().decode('utf-8')
  10. #print content
  11. if u'发布成功' in content:
  12. print 'reply success!'
  13. else:
  14. print 'reply faild!'
  1. if __name__ == '__main__':
  2. robot = Robot('http://192.168.150.1', 'admin', 'admin')
  3. robot.login()
  4. robot.reply(39765)
  1.  
  1.  
  1. 说明:到此已实现论坛的自动登录回帖功能,由于图片上传不了很多细节没描述清楚,有问题可以加群244844732(群刚创建)交流
  1.  

python模拟登陆discuz论坛的更多相关文章

  1. Python模拟登陆新浪微博

    上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...

  2. Python模拟登陆万能法-微博|知乎

    Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

  3. Python模拟登陆TAPD

    因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...

  4. Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

    Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...

  5. Python模拟登陆某网教师教育网

    本文转载自看雪论坛[作者]rdsnow 不得不说,最近的 Python 蛮火的,我也稍稍了解了下,并试着用 Python 爬取网站上的数据 不过有些数据是要登陆后才能获取的,我们每年都要到某教师教育网 ...

  6. python模拟登陆知乎并爬取数据

    一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...

  7. python 模拟登陆,请求包含cookie信息

    需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...

  8. python模拟登陆之下载

    好长时间没有更新博客了,哈哈. 今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到web! 中间涉及到的技术点有: 模拟登陆 ...

  9. Android HttpClient自己主动登陆discuz论坛!

    你登陆论坛的时候,我们先看看浏览器干了什么事儿: 用Firefox打开HiPda 的登陆页面,输入用户名和password,点登陆. 以下是通过firebug插件获取的数据: 能够看到浏览器这个htt ...

随机推荐

  1. mode(BZOJ 2456)

    Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...

  2. 16.1113 模拟考试T2

    测试题 #4 括号括号[问题描述]有一个长度为?的括号序列,以及?种不同的括号.序列的每个位置上是哪种括号是随机的,并且已知每个位置上出现每种左右括号的概率.求整个序列是一个合法的括号序列的概率.我们 ...

  3. Android 获取屏幕事件的坐标

    通常情况下我们只能获取当前Activity的画面坐标,那有时候我们需要做到一种类似于c++ hook的后台运行程序能够监听到前台用户的操作并记录下来,往往这类程序都是为自动化测试服务的. Androi ...

  4. Laravel 5.1 简单学习

    Laravel 5.1 简单学习 (1)Laravel的nginx配置,不配置或者配置错误,可能会报404或500错误,访问不到页面. location / { try_files $uri $uri ...

  5. android获取手机号

    private String getPhoneNum(){ //与手机建立连接 TelephonyManager tm = (TelephonyManager)getSystemService(Con ...

  6. Struts2的标签三大类是什么?

    Struts2 标签 一 Struts标签的简介: Struts2 自己封装了一套标签,比 JSTL 强大,而且与 Struts2 中的其他功能无缝结合. 当然 Strust2 标签的内容很多,随着版 ...

  7. Java日志框架-Spring中使用Logback(Spring/Spring MVC)

    继上一篇文章http://www.cnblogs.com/EasonJim/p/7800880.html中所集成的是基于Java的普通项目,如果要在Spring和Spring MVC上集成,需要做如下 ...

  8. amplab

    https://github.com/amplab/SparkNet https://amplab.cs.berkeley.edu/

  9. SQL Server 存储字符数较大字段的问题

    SQL Server 2000专门提供了处理text,ntext,image字段的函数,他们是: TEXTPTR TEXTVALID READTEXT UPDATETEXT WRITETEXT 一般作 ...

  10. C#-訪问轰炸机,新建进程,结束进程...(ConsoleApp)---ShinePans

    这个程序能够自己主动打开要打开的网址,而且自己主动结束进程,这样能够达到博文点击流量的添加 program.cs using System; using System.Collections.Gene ...