python实现自动登录discuz论坛!

网站有formhash值的自动签到实现) 本文用于网站有formhash值的每天自动签到的学习交流哈,不多说直接上代码。 阅读详情

最近被公司的事情搞的很纠结,博客也有段时间没写了,不过最近还是忙里偷闲做了点其他事情,在这里记录下来,和大家分享一下。

需求也比较简单,老婆是做社区运营的,所以需要每天把几个帖子定时的顶上来,手工做很累,所以就想让我用程序实现。

分析一下,其实无非是先用户名和密码登录,获取到cookie后,再带着cookie去访问要顶贴的页面即可,至于剖析页面来获取url就是BeautifulSoup要做的事情了。(论坛是discuz做的,这里只为演示方法)

登录代码实现如下: Python学习交流群:1004391443

def Login(user,pwd):

   loginpage = urllib.urlopen('http://bbs.xxx.com/logging.php?action=login').read()

   login_soup = BeautifulSoup(loginpage)

   formhash_tag = login_soup.find('input',attrs={'name':'formhash'})

   formhash = formhash_tag['value']

    

   params = {

           "answer":"",

           "formhash":formhash,

           "loginfield":"username",

           "loginsubmit":"",

           "password":pwd,

           "questionid":"0",

           "referer":"index.php",

           "username":user,

           }

   jar = cookielib.CookieJar()

   handler = urllib2.HTTPCookieProcessor(jar)

   opener = urllib2.build_opener(handler)

   urllib2.install_opener(opener)

   user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

   headers = { 'User-Agent' : user_agent }

   req = urllib2.Request(login_url)

   req.add_header('User-Agent',user_agent)

   enparams = urllib.urlencode(params)

   page = urllib2.urlopen(req,enparams)

   data = page.read()

   global g_cookie

   global g_formhash

   g_cookie = page.info()['set-cookie']

   t_cookie = re.sub(r'poK_formhash=deleted','',g_cookie)

   r_formhash = re.search(r"poK_formhash=[^;]+",t_cookie)

   if r_formhash:

       g_formhash = re.sub(r'poK_formhash=','',r_formhash.group())

   return

简单说明一下:

jar = cookielib.CookieJar()

handler = urllib2.HTTPCookieProcessor(jar)

opener = urllib2.build_opener(handler)

urllib2.install_opener(opener)

这段代码是为了能够页面返回时的cookie,并且在urllib2请求页面的时候能够自动带上cookie,而formhash是个比较诡异的东西,在登录页面设置的formhash和cookie返回的poK_formhash居然不是同一个值(后来发现,在回复页面,又是另一个值),经过测试,用cookie里的值是对的。

登录态获取到之后,剩下的就是直接去打开页面就行了,但是因为我需要去回复帖子,所以还是显得麻烦点:

def ReplyPost(url,params):

   req = urllib2.Request(url)

   user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

   req.add_header('User-Agent',user_agent)

   enparams = urllib.urlencode(params)

   page = urllib2.urlopen(req,enparams)

这样就可以了,由于对老婆公司的保密,所以代码就不放出下载了,大家了解了原理自己去写应该不难。

------------------------我是华丽的分割线----------------------------

其实在写的过程中是遇到不少问题的,列在这里如下:

1.CookieJar的实例似乎没有办法获取每个key的值,也许是我愚钝,但是看了源码都不知道怎么用,大家有知道的恳请赐教。。于是用了

g_cookie = page.info()['set-cookie']

这种方式,但是更诡异的事情是,当我这样获取cookie时,居然返回了两段。。所以在代码里我删掉了为空的那个

2.当配置上代理的时候CookieJar是获取不到cookie的。

由于一开始是在公司写的,而伟大的公司完美继承了gfw的意志,搞了个代理,于是用之前博客里提到的方法:

proxy = 'proxy.xxx.com:8080'

opener = urllib2.build_opener( urllib2.ProxyHandler({'http':proxy}) ) 

urllib2.install_opener( opener )

然后jar就一直为空,让我一度怀疑自己的智商是不是有问题,这么简单的程序都要调试半天。

3.如果实在是CookieJar获取不到cookie,我们其实还是有别的办法的,那就是手动去设置http请求包头:

cookie = page.info()['set-cookie']

req = urllib2.Request("xxxxx.php")

req.add_header('Cookie',cookie)

要记得是使用登录页面返回的cookie,否则是无效的。(其实这种方法满足的另一个需求是,你可以直接在浏览器中抓包得到cookie来进行程序自动访问) 

python discuz_Python爬虫自动下载Discuz论坛附件。 121,278因工作需要,要定期收集卡饭论坛的病毒样本板块的病毒样本,所以就考虑用 Python做个爬虫,然后自动下载附件。核心功能有3个:1· 登录2· 伪造cookie保持session3. 下载样本首先,登录就是先抓取登录页面,找到登录表单会post的数据,当然你也可以用firefox的httpfox插件。需要注意的是,discuz的登录表单里有个hashform字段,是会随时间变的,所以要... 阅读详情

相关推荐

Python + Selenium 入门之Discuz论坛实例

以下是一段完整的Discuz论坛登录、发帖和回复的代码。使用Firefox的selenium IDE录制后进行整理,在IE下可正常运行。但在Firefox下进入版块时找不到[默认版块]元素、在Chrome下能进入版本和填写标题,但无法点击帖子内容的输入框。不得不说selenium的水还是很深滴~~~ # 启动浏览器,打开论坛登录页面 driver = webdriver.Firefox

虫儿去哪儿 1985

Python实现自动登录discuz论坛

文章来源:http://blogread.cn/it/article.php?id=2170&f=sr 最近被公司的事情搞的很纠结,博客也有段时间没写了,不过最近还是忙里偷闲做了点其他事情,在这里记录下来,和大家分享一下。 需求也比较简单,老婆是做社区运营的,所以需要每天把几个帖子定时的顶上来,手工做很累,所以就想让我用程序实现。 分析一下,其实无非是先用户名和密码登录,获取

AlienTech for better life!~ 5101

DiscuzAPI:Discuz的python API,可以登陆、签到、发帖、回帖、上传图片等。python直接import就可以用,你们也感受一下!

导入DiscuzAPI 机械手= DiscuzAPI(sys.argv [1],sys.argv [2],sys.argv [3]) robot.login() robot.sign() robot.speak() robot.publish(21,“ test”,imgId) robot.reply(10) imageData = open('test.jpg','rb')。read() 打印robot.uploadImage(imageData)

【PHP】(原创)之表单FORM的formhash校验,以TP3.2示例

1、目的:每次表单POST提交(ajax的POST也适用)过来数据,都必须校验formhash参数是否和服务器端的一致,不一致说明重复提交或者 跨站攻击提交csrf 2、原理:参照了 KPPW 的formhash生成和校验示例。将formhash的生成写入基类构造函数,每次登陆用户操作数据,都生成hash并进行比较。 (用户未登录状态,也可以校验formhash,可以让你的网站免于 遭受  无状态...

weixin_34292924的博客 1560

Discuz 自动同步登陆的完美解决办法

Discuz很强大,安装、使用都很方便,能满足大部分论坛的需求,于是在做系统开发用到论坛的话几乎是毫不犹豫地会选择Discuz(对比过Discuz和PHPWind)。

ANSYS Workbench对称分析进阶:手把手教你用Pre-Meshed Cyclic Region处理外部导入的复杂网格模型

本文详细介绍了ANSYS Workbench中Pre-Meshed Cyclic Region功能在处理外部导入复杂网格模型时的应用。通过循环对称分析技术,可显著减少计算资源消耗,特别适用于叶轮机械、齿轮组等周期性结构分析。文章深入解析了该功能的底层逻辑,并提供了从NASTRAN文件导入的离心压缩机叶轮案例,帮助工程师克服网格匹配难题。

weixin_28630185的博客 314

『python爬虫』formhash 与 跨站请求伪造(CSRF)攻击

『python爬虫』formhash 与 跨站请求伪造(CSRF)攻击

MZH 1368

GNN-图卷积模型-直推式-2016:GCN【消息传递(前向传播):聚合函数+更新函数】【聚合函数:mean(邻域所有节点取平均值)】【训练更新函数的参数】【空域+频域】【同质图】

图神经网络(GNN):GCN【开山之作】

u013250861的博客 2056

探索Discuz! API的自动化神器:DiscuzAPI

探索Discuz! API的自动化神器:DiscuzAPI 在互联网社区管理中,Discuz! 是一个广受欢迎的论坛系统。为了解放管理员繁琐的手动操作,我们欣喜地向您推荐一款开源工具 —— DiscuzAPI。这个强大的Python库让你能够轻松实现对Discuz! 论坛的自动化控制,无论是登录、签到、发帖还是回复,只需几行代码即可完成。 1. 项目介绍 DiscuzAPI 是一个为Discuz!...

gitblog_00087的博客 814

代谢组数据分析(零):从质谱样本制备到MaxQuant搜库(蛋白质组和代谢组)

本文详细介绍了代谢组数据分析的过程,从LC-MS/MS技术的样本制备、分离、质谱鉴定到MaxQuant软件的使用。LC-MS/MS包括样本制备、液相色谱分离、质谱上机和鉴定等步骤。MaxQuant在蛋白质定性和定量中扮演关键角色,通过搜库和数据处理提供精准结果。此外,文章还涉及了数据采集模式、质谱图谱解析、数据库和软件选择以及结果评估等方面

专注生信领域 8593

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1198

python登陆Discuz!论坛通用代码

分享一例python实现的登陆Discuz!论坛通用代码。 代码如下: #coding:gbk import urllib2,urllib,cookielib,re '''  通用的登陆DZ论坛  参数说明parms:    username:用户名(必填),    password :密码(必填),    domain:网站域名,注意格式必须是:http://www

行走的小陀螺 1794

智护健康:基于 ESP32 的可穿戴式心率血氧远程监测手环设计与实现

随着健康管理理念的普及,可穿戴式健康监测设备成为刚需。本文设计了一款基于 ESP32 芯片的可穿戴式心率与血氧远程监测手环,通过集成专业生物传感器采集生理数据,借助 ESP32 的无线通信能力实现数据远程传输,搭配手机 APP 与云平台完成数据存储、分析与预警。文中详细阐述了硬件选型、模块接线、软件设计流程及核心代码实现,该手环具备低功耗、高精度、实时性强等特点,可满足日常健康监测与远程照护需求。

weixin_42300449的博客 1201

python discuz发帖_Python实现Discuz论坛的自动POST登录发贴回帖

#-*-coding:utf-8-*-import urllib2, urllib, cookielibimport reimport getpassimport sqlite3import randomimport timeclass Discuz:def __init__(self,user,pwd,args):self.username = userself.password = pwdse...

weixin_39608116的博客 275

配置 SAP Web Dispatcher 的实战指南:打通 SAP Fiori、SAP Gateway 与前端系统的关键一跳

SAP Web Dispatcher 在 Fiori 架构中扮演关键角色,作为统一入口处理 HTTPS 请求、实现安全代理和流量分发。它将分散在不同系统的访问路径统一收口,解决浏览器同源策略限制,集中管理 HTTPS 终止和客户端信息传递。典型配置中,Web Dispatcher 监听 443 端口,根据路径将 OData 请求转发至 Gateway 系统,静态资源请求送至前端服务器。SSL 相关配置(如 PSE 文件)确保安全通信,而路由规则(wdisp/system_xx)决定请求转发目标。实施时需注意

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 105

lammps教程:非晶sio2建模方法

大家好,我是小马老师。 本文介绍非晶sio2的建模方法。 sio2的建模方法有很多,可以下载cif文件使用atomsk转为data文件,也可以直接在ms中导入sio2结构,这些方法建的sio2都是标准的sio2晶体。 如果要建立非晶状态的sio2,就是把排列规则的sio2变成无序排列的sio2。 非晶建模方法有很多,在lammps中,可以通过高温高压的方法打乱sio2的排列实现非晶建模。 代码中的温度和步数可根据需要自己调整。 下面给出in文件案例代码。 units metal atom

lammps_jiayou的博客 5269

python爬取discuz_python爬虫之自动登录discuz!刷分

最近看论坛比较多,想提高在论坛的等级,就寻思着写个每天自动刷分的脚本。下面我们就从零开始用python实现一个自动登录,自动访问空间的脚本。我们就以https://www.hostloc.com/作为我们的实验对象。环境要求我们需要一个python3的执行环境,还有python包管理器pip,针对实现整个功能我们需要两个等三方的包urllib3和BeautifulSoup4。# pip 不是环境变...

weixin_39683526的博客 1173

FineReport实战-- 国内外各地区销售数据分析 多个图表联动

进行国内外各地区业务员销售数据分析是一项复杂但极具价值的任务,它可以帮助企业了解不同市场的表现,并据此调整销售策略以提高整体绩效。实现功能:同一个报表里面多个图表联动问题。

Davina_yu的博客 1201

python discuz_python实现的登陆Discuz!论坛通用代码分享

代码如下:#coding:gbkimport urllib2,urllib,cookielib,re'''通用的登陆DZ论坛参数说明parms:username:用户名(必填),password :密码(必填),domain:网站域名,注意格式必须是:http://www.xxx.xx/(必填),answer:问题答案,questionid:问题ID,referer:跳转地址这里使用了可变关键字参...

weixin_39874196的博客 374

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python discuz验证码_python实现自动登录discuz论坛

最近被公司的事情搞的很纠结,博客也有段时间没写了,不过最近还是忙里偷闲做了点其他事情,在这里记录下来,和大家分享一下。需求也比较简单,老婆是做社区运营的,所以需要每天把几个帖子定时的顶上来,手工做很累,所以就想让我用程序实现。分析一下,其实无非是先用户名和密码登录,获取到cookie后,再带着cookie去访问要顶贴的页面即可,至于剖析页面来获取url就是BeautifulSoup要做的事情了。(...

weixin_39973518的博客 294

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python discuz_PYTHON实现DISCUZ论坛的自动POST登录发贴回帖

#-*-coding:utf-8-*-import urllib2, urllib, cookielibimport reimport getpassimport sqlite3import randomimport timeclass Discuz:def __init__(self,user,pwd,args):self.username = userself.password = pwdse...

weixin_39827036的博客 252

python discuz_Python实现Discuz论坛的自动POST登录发贴回帖(转)

#-*-coding:utf-8-*-importurllib2, urllib, cookielibimportreimportgetpassimportsqlite3importrandomimporttimeclassDiscuz:def__init__(self,user,pwd,args):self.username=userself.password=pwdself.args=args...

weixin_39792472的博客 230

python代码分享论坛_python实现的登陆Discuz!论坛通用代码分享

代码如下:#coding:gbkimport urllib2,urllib,cookielib,re'''通用的登陆DZ论坛参数说明parms:username:用户名(必填),password :密码(必填),domain:网站域名,注意格式必须是:http://www.xxx.xx/(必填),answer:问题答案,questionid:问题ID,referer:跳转地址这里使用了可变关键字参...

weixin_40002336的博客 433

python discuz论坛_Python 实现 Discuz 论坛自动登录踢楼 | 睿鑫网络

# -*- coding: utf-8 -*import requestsimport time #不延时可以去掉import reimport osimport sysimport stringn = 0 #循环次数a = 9 #计数器b = 0tiloun = 88 #中奖楼层tilouid = 8888 #踢楼帖子IDRead_nowlou = 0 #当前楼层starttime = time...

weixin_39671621的博客 234

python discuz论坛帖子_PYTHON实现DISCUZ论坛的自动POST登录发贴回帖

#-*-coding:utf-8-*-import urllib2, urllib, cookielibimport reimport getpassimport sqlite3import randomimport timeclass Discuz:def __init__(self,user,pwd,args):self.username = userself.password = pwdse...

weixin_39902870的博客 278

python discuz论坛_登陆Discuz!类型论坛的通用python代码

1.[代码][Python]代码#coding:gbkimport urllib2,urllib,cookielib,re'''通用的登陆DZ论坛参数说明parms:username:用户名(必填),password :密码(必填),domain:网站域名,注意格式必须是:http://www.xxx.xx/(必填),answer:问题答案,questionid:问题ID,referer:跳转地址...

weixin_39796855的博客 247
上一篇: 图解python中赋值、浅拷贝、深拷贝的区别!
下一篇: 使用python爬虫抓站的一些技巧总结:进阶篇!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值