BBS的登陆——发帖——回帖
整体分析思路

1、首先手工熟悉一遍业务流程
2、录制脚本,选取协议,设置录制选项
1)Run-Time-Settings——Preferences——Options设置3个超时

2)Recording Options——Recording设置,选择HTML,web_url,web_submit_data

3、录制完成以后,优化一下脚本
1)将脚本里的函数都捋一遍,即函数对应的业务是什么,去掉无关的业务,保证脚本的简洁
2)做的事非整站的性能,可将EXTRARES里的脚本都删除掉
4、分析脚本
1)登陆
可将用户名参数化
2)发帖
a、将脚本回放,报错

b、发帖时会产生一个动态变化值,formhash
c、去网页源码里寻找formhash,在hidden域里找到formhash
<input type="hidden" name="mod" id="scbar_mod" value="search" />
<input type="hidden" name="formhash" value="b450c09e" />
<input type="hidden" name="srchtype" value="title" />
<input type="hidden" name="srhfid" value="2" id="dzsearchforumid" />
<input type="hidden" name="srhlocality" value="forum::post" />
<table cellspacing="0" cellpadding="0">
d、将formhash做关联,因为关联函数是预注册函数,需放在默认版块之前
//发帖、回帖均需要关联formhash值
//<input type="hidden" name="formhash" value="b450c09e" />
web_reg_save_param("formhash",
"LB=name=\"formhash\" value=\"",
"RB=\" />",
LAST);
3)回帖
a、回帖时,tid是动态变化的值,需要做关联,(是对刚才新建的帖子进行回复,如不关联,如tid=4557,就会对编号是4557的帖子不断的回复)
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>发帖发帖 - 默认版块 - Discuz! Board - Powered by Discuz!</title>
<link href="http://192.168.1.188/bbs/forum.php?mod=viewthread&tid=4587" rel="canonical" />
<meta name="keywords" content="发帖发帖" />
<meta name="description" content=" 发帖发帖 ,Discuz! Board" />
b、将tid做关联,关联函数是预注册的,需要发在发帖之前
//<link href="http://{ip}/bbs/forum.php?mod=viewthread&tid=4587" rel="canonical" />
//在对应的帖子下进行回复,需关联tid
web_reg_save_param("tidnum",
"LB=forum.php?mod=viewthread&tid=",
"RB=\" rel=\"",
LAST);
4、登陆——发帖——回帖(完整版)
Action()
{
//保存值函数
lr_save_string("192.168.1.188","ip"); //首页
web_url("forum.php",
"URL=http://{ip}/bbs/forum.php",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t24.inf",
"Mode=HTML",
LAST); //登陆
web_submit_data("member.php",
"Action=http://{ip}/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1",
"Method=POST",
"TargetFrame=",
"RecContentType=text/xml",
"Referer=http://{ip}/bbs/forum.php",
"Snapshot=t25.inf",
"Mode=HTML",
ITEMDATA,
"Name=fastloginfield", "Value=username", ENDITEM,
"Name=username", "Value={uname}", ENDITEM,
"Name=password", "Value=123123", ENDITEM,
"Name=quickforward", "Value=yes", ENDITEM,
"Name=handlekey", "Value=ls", ENDITEM,
LAST); //<input type="hidden" name="formhash" value="b450c09e" />
//给发帖做关联
web_reg_save_param("formhash",
"LB=type=\"hidden\" name=\"formhash\" value=\"",
"RB=\" />",
LAST); //进入默认版块
web_url("默认版块",
"URL=http://{ip}/bbs/forum.php?mod=forumdisplay&fid=2",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{ip}/bbs/forum.php",
"Snapshot=t27.inf",
"Mode=HTML",
LAST); //给回帖做关联
//http://192.168.1.188/bbs/forum.php?mod=viewthread&tid=4580" rel="canonical" />
web_reg_save_param("tidno",
"LB=forum.php?mod=viewthread&tid=",
"RB=\" rel=",
LAST); //发帖
web_submit_data("forum.php_4",
"Action=http://{ip}/bbs/forum.php?mod=post&action=newthread&fid=2&extra=&topicsubmit=yes",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://{ip}/bbs/forum.php?mod=post&action=newthread&fid=2&referer=http%3A//{ip}/bbs/forum.php%3Fmod%3Dforumdisplay%26fid%3D2",
"Snapshot=t29.inf",
"Mode=HTML",
ITEMDATA,
"Name=formhash", "Value={formhash}", ENDITEM, //formhash是动态值
"Name=posttime", "Value=1439821219", ENDITEM,
"Name=wysiwyg", "Value=1", ENDITEM,
"Name=subject", "Value=艰苦学习", ENDITEM,
"Name=message", "Value=成效卓越,加油", ENDITEM,
"Name=replycredit_extcredits", "Value=0", ENDITEM,
"Name=replycredit_times", "Value=1", ENDITEM,
"Name=replycredit_membertimes", "Value=1", ENDITEM,
"Name=replycredit_random", "Value=100", ENDITEM,
"Name=readperm", "Value=", ENDITEM,
"Name=price", "Value=", ENDITEM,
"Name=tags", "Value=", ENDITEM,
"Name=rushreplyfrom", "Value=", ENDITEM,
"Name=rushreplyto", "Value=", ENDITEM,
"Name=rewardfloor", "Value=", ENDITEM,
"Name=stopfloor", "Value=", ENDITEM,
"Name=save", "Value=", ENDITEM,
"Name=usesig", "Value=1", ENDITEM,
"Name=allownoticeauthor", "Value=1", ENDITEM,
LAST); //回帖
web_submit_data("forum.php_5",
"Action=http://{ip}/bbs/forum.php?mod=post&action=reply&fid=2&tid={tidno}&extra=&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1",
"Method=POST",
"TargetFrame=",
"RecContentType=text/xml",
"Referer=http://{ip}/bbs/forum.php?mod=viewthread&tid={tidnum}&extra=",
"Snapshot=t30.inf",
"Mode=HTML",
ITEMDATA,
"Name=message", "Value=过来顶贴了", ENDITEM,
"Name=posttime", "Value=1439821241", ENDITEM,
"Name=formhash", "Value={formhash}", ENDITEM,
"Name=subject", "Value=", ENDITEM,
LAST); return ;
}
BBS的登陆——发帖——回帖的更多相关文章
- 04 http协议模拟登陆发帖
<?php require('./http.class.php'); $http = new Http('http://home.verycd.com/cp.php?ac=pm&op=s ...
- Discuz常见小问题-如何取消登陆发帖验证码
1 正常情况下,用户点击登录之后,需要填写验证码 2 进入后台,点击防灌水,验证设置,然后下面的各个选项可以设置是否启用验证码.
- django开发的社区和博客
社区 线上地址:http://codetheme.sinaapp.com/ Githubhttps://github.com/BeginMan/codetheme 由于利用两周下班时间熬夜做的,难免有 ...
- 百度贴吧自动回帖的两种方式,使用requests(urllib2)和selenium两种方式回帖
本文介绍,回复贴吧指定某楼层主的帖子的方法.在这里不介绍无限发主贴和无限回复主贴的方法,无限发主题帖会爆吧,引起别人的反感,并且很容易遭到吧主的封杀:无限回主题帖,会让整个帖子的每楼的回复充满了自己的 ...
- 【中国人大:天地人大BBS站】迟到的求职感悟
转自 http://i.cnblogs.com/EditPosts.aspx?opt=1 研究生最后一年,我参加了一个500强外企实习,单纯幼稚的小姑娘立马被白领工作的那种光鲜亮丽给迷惑了,同时听说可 ...
- 20145212 罗天晨 WEB登陆发贴及会话管理功能的实现
会话管理简介 Cookie: cookie常用于识别用户. cookie 是服务器留在用户计算机中的小文件,每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie. 通过PHP能够创建并取回 ...
- 【Python】理想论坛每小时发帖量统计图表
写以下代码的目的是分析一天中各时段理想论坛中用户发帖回帖的活跃程度,获得结尾那张图表是核心. 以下代码两种爬虫协助,论坛爬虫先爬主贴,爬到主贴后启动帖子爬虫爬子贴,然后把每个子贴的发表时间等存入数据库 ...
- 基于JSP的学术交流论坛系统的设计与实现
版权声明:本文为[博主](https://zhangkn.github.io)原创文章.未经博主同意不得转载. https://creativecommons.org/licenses/by-nc-s ...
- [转]passport.js学习笔记
概述 passport.js是Nodejs中的一个做登录验证的中间件,极其灵活和模块化,并且可与Express.Sails等Web框架无缝集成.Passport功能单一,即只能做登录验证,但非常强大, ...
随机推荐
- spring之事务
1.编程式事务 2.声明式事务:aop
- unity A*寻路 (一)导出NavMesh数据
使用unity的API NavMesh.CalculateTriangulation 可以获取NavMesh数据 首先 我们创建一个新的工程 保存一个test场景 然后在场景中添加一个Plane作 ...
- Git分支(3/5) -- 禁用 Fast Forward 合并
添加一个分支, 并且换到该分支: git checkout -b add-text 然后我再index.html里面添加点文字, 并commit. 然后再修改README.md, 添加文字, comm ...
- 10个技巧优化PHP程序Laravel 5框架
10个技巧优化PHP程序Laravel 5框架 性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践www.itxdl.c ...
- Hashtable源码解析(JDK1.8)
package java.util; import java.io.*; import java.util.concurrent.ThreadLocalRandom; import java.util ...
- 零散Linux命令
1. # ps -ef|grep java 查询java进程 2. # kill -9 进程号 关闭指定进程
- 关于html文档的规范
1. <!DOCTYPE html> 告诉浏览器该文档使用哪种html或xhtml的规范 2. 元数据中的X-UA-Compatible <meta http-equiv=" ...
- CSS(CSS3)选择器(2)
该部分主要为CSS3新增的选择器 接上一篇 CSS(CSS3)选择器(1) 一.通用兄弟选择器: 24:E ~ F,匹配任何E元素之后的同级F元素. div ~ p{ background-color ...
- maven项目与普通项目的区别
maven项目 1:创建方式不同 (web项目举例) 第一种: 第二种: 2:目录结构 稍有不同 3:Pom文件 添加依赖信息,需要那个jar包的时候 加入哪个jar包的依赖,要不然无法使用这个j ...
- 【网络】 应用&传输层笔记
应用层 应用层常用的协议和各自对应的TCP/UDP端口: DNS TCP/UDP 53 HTTP TCP 80 SMTP TCP 25 POP UDP 110 Telnet TCP 23 DHCP U ...