整体分析思路

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. python笔记之异常

    异常 內建异常在exceptions模块内,使用dir函数列出模块的内容. 自定义异常类:继承基类Exception. 异常可以使用raise语句引发,可以使用try ... except ... e ...

  2. 数据库操作sql

    一.把从另外一张表里查到的值插入到前表: 1. 表结构完全一样 insert into 表1 select * from 表2 2. 表结构不一样(这种情况下得指定列名) insert into 表1 ...

  3. 初始化angularJS之ng-app的自动绑定和手动绑定

    在传统的angularJS应用中,都是通过ng-app把angular应用绑定到某个dom上,这样做会把js代码入侵到html上,angular提供了手动启动的API--angular.bootstr ...

  4. poj 2681 字符串

    http://poj.org/problem?id=2681 给你任意长度的字符串,找出两串字符中不相同的字符个数(总数) #include<string> #include<cst ...

  5. zabbix的各种键值

    zabbix服务器端通过与zabbix agent通信来获取客户端服务器的数据,agent分为两个版本,在配置主机我们可以看到一个是agent,另一个是agent(active). agent:zab ...

  6. 斑马ZPL指令加入如换行、回车等控制符的方法

    在程序中可能会被过滤掉,直接在指令中加入ASCII对应的16进制字符即可解决改问题, 语法:_十六进制(ASCII) 栗子:hello_0D_0Aworld  换行 扫描结果: hello world

  7. Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...

  8. JavaEE GenericServlet 解析

    从 上一篇 文章中可以看到,直接实现 Servlet 接口需要实现其所有方法,而这通常不是好的做法.相反,一种相对较好的做法是给出一个实现类来默认实现其所有方法或者部分方法,并开放给子类.而子类再在此 ...

  9. Java 自定义实现链表

    自定义实现链表很简单,只需要明白链表是什么样子的数据结构. 下图表示一种单向列表.其中指针first指向队头,last指向队尾,curr指向当前读的数据. 下面是我的实现代码,很简单,明白上述结构后, ...

  10. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...