整体分析思路

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的登陆——发帖——回帖的更多相关文章

  1. 04 http协议模拟登陆发帖

    <?php require('./http.class.php'); $http = new Http('http://home.verycd.com/cp.php?ac=pm&op=s ...

  2. Discuz常见小问题-如何取消登陆发帖验证码

    1 正常情况下,用户点击登录之后,需要填写验证码 2 进入后台,点击防灌水,验证设置,然后下面的各个选项可以设置是否启用验证码.

  3. django开发的社区和博客

    社区 线上地址:http://codetheme.sinaapp.com/ Githubhttps://github.com/BeginMan/codetheme 由于利用两周下班时间熬夜做的,难免有 ...

  4. 百度贴吧自动回帖的两种方式,使用requests(urllib2)和selenium两种方式回帖

    本文介绍,回复贴吧指定某楼层主的帖子的方法.在这里不介绍无限发主贴和无限回复主贴的方法,无限发主题帖会爆吧,引起别人的反感,并且很容易遭到吧主的封杀:无限回主题帖,会让整个帖子的每楼的回复充满了自己的 ...

  5. 【中国人大:天地人大BBS站】迟到的求职感悟

    转自 http://i.cnblogs.com/EditPosts.aspx?opt=1 研究生最后一年,我参加了一个500强外企实习,单纯幼稚的小姑娘立马被白领工作的那种光鲜亮丽给迷惑了,同时听说可 ...

  6. 20145212 罗天晨 WEB登陆发贴及会话管理功能的实现

    会话管理简介 Cookie: cookie常用于识别用户. cookie 是服务器留在用户计算机中的小文件,每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie. 通过PHP能够创建并取回 ...

  7. 【Python】理想论坛每小时发帖量统计图表

    写以下代码的目的是分析一天中各时段理想论坛中用户发帖回帖的活跃程度,获得结尾那张图表是核心. 以下代码两种爬虫协助,论坛爬虫先爬主贴,爬到主贴后启动帖子爬虫爬子贴,然后把每个子贴的发表时间等存入数据库 ...

  8. 基于JSP的学术交流论坛系统的设计与实现

    版权声明:本文为[博主](https://zhangkn.github.io)原创文章.未经博主同意不得转载. https://creativecommons.org/licenses/by-nc-s ...

  9. [转]passport.js学习笔记

    概述 passport.js是Nodejs中的一个做登录验证的中间件,极其灵活和模块化,并且可与Express.Sails等Web框架无缝集成.Passport功能单一,即只能做登录验证,但非常强大, ...

随机推荐

  1. View滑动的常见方式

    今天头条的面试官问起了实现View滑动的方式,其实前几天刚刚看过,但还是没能答上来,这里再来总结一遍. 1.使用scrollTo/scrollBy 为了实现View滑动,Android专门提供了这两个 ...

  2. .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

    最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理. 去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这次机会就用 ...

  3. Mysql自连接的一些用法

    自连接是连接的一种用法,但并不是连接的一种类型,因为他的本质是把一张表当成两张表来使用. mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名. 我们举例说明,下面是商品采 ...

  4. FNV算法实战

    HASH算法介绍 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长 ...

  5. 快速理解web语义化

    什么是Web语义化 Web语义化是指使用恰当语义的html标签.class类名等内容,让页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容.语义化的web页面一方面可以让机器在更少的人类干预 ...

  6. UVA 10305 Ordering Tasks(拓扑排序的队列解法)

    题目链接: https://vjudge.net/problem/UVA-10305#author=goodlife2017 题目描述 John有n个任务,但是有些任务需要在做完另外一些任务后才能做. ...

  7. C++基于范围循环(range-based for loop)的陷阱

    C++的基于范围的循环是C++11出现的新特性,很方便,一定程度上替代了使用迭代器的for循环用法.不过基于范围的for循环有一个隐藏的陷阱,如果不注意可能会出现严重的内存错误. 举例说明 看下面这个 ...

  8. 【网络】 数据链路层&物理层笔记

    数据链路层 简称链路层,功能在于将数据包封装成帧,控制帧对介质的访问.链路层连接了物理介质和其之上抽象层,可以使上层不用关心用什么方法在什么介质中传输信息. 在帧被传输时经过的每一跳,每个中间设备(通 ...

  9. 源码实现 --> strcpy

    拷贝字符串到目标字符串 函数 char *strcpy(char *strDestination, const char *strSource); 复制源串strSource到目标串strDestin ...

  10. Algorithm --> 最长回文子串

    1.中心扩展 中心扩展就是把给定的字符串的每一个字母当做中心,向两边扩展,这样来找最长的子回文串.算法复杂度为O(N^2). 但是要考虑两种情况: 1.像aba,这样长度为奇数. 2.想abba,这样 ...