教程中test/post.asp的妙用~

[ 17260 查看 / 61 回复 ]

我终于学会用wbo()登陆论坛了。

试想wbo()能登陆论坛,当然也能发帖了。。。。。

经多次试验wbo()发帖都不成功,可能因为少了参数吧~

但要发一个帖那么多参数怎么找?

我突然想起了教程里有一段:

参数为 wbo(网址,目标窗口,需要重定义的HTTP头,post数据--string类型)

例:
wbo("http://www.yhhe.net/ape/test/post.asp","_self","Content-Type: application/x-www-form-urlencoded","username=yihe&password=8970")

我试过,把我提交的数据全返回给我了,这个不错,能不能把我网页提交的数据也给我反回来呢~

我试着把网页HTML保存,然后在本地打开,找到提交相关参数:

<form method="post" name="FORM" action="post.php?" enctype="multipart/form-data">

我把post.php?改成了http://www.yhhe.net/ape/test/post.asp,试试在本地提交,给果反回为nil

决不死心,再找找想到还有想关html头是multipart/form-data可以试试改成教程上的Content-Type: application/x-www-form-urlencoded

改过后成了:

<form method="post" name="FORM" action="http://www.yhhe.net/ape/test/post.asp" enctype="application/x-www-form-urlencoded">

刷新网页后,试着发一帖,标题为123内容为321~

果真能把我post的数据反回来:

&atc_title=123&sale=&mode=2&color=&atc_money=0&action=new&atc_autourl=1&atc_usesign=1&article=&atc_convert=1&font=&fid=8&digest=0&size=&atc_attachment1=&atc_attachment2=&atc_attachment3=&atc_attachment4=&atc_attachment5=&tid=0&atc_content=321&atc_rvrc=0&atc_downrvrc1=0&atc_desc1=&atc_downrvrc2=0&atc_desc2=&atc_downrvrc3=0&atc_desc3=&atc_downrvrc4=0&atc_desc4=&atc_downrvrc5=0&atc_desc5=&step=2&pid=

呵呵~post的东西不少呢~

这些东西做wb:go()的最后那个参数,发一帖试试,我写下了如下脚本:

<?xml version="1.0" encoding="gb2312" ?>
<ApeML LID="CHS" MD="0" 抓屏模式="0" 名称="新建模拟程序" 作者="模拟精灵 2005" 信息窗口="true" 速度="10" 循环次数="1" 自定义属性="运行提示=正在运行,运行次数=0">
<!--创建时间:2006年04月18日-18:07-->
<脚本区块 语言="LAScript" 名称="init" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">
  <![CDATA[
wb = web.new("http://bbs.btwuji.com/post.php?fid-8.html");
wb:go("http://bbs.btwuji.com/post.php?","_self","Content-Type: application/x-www-form-urlencoded","&atc_title=123&sale=&mode=2&color=&atc_money=0&action=new&atc_autourl=1&atc_usesign=1&article=&atc_convert=1&font=&fid=8&digest=0&size=&atc_attachment1=&atc_attachment2=&atc_attachment3=&atc_attachment4=&atc_attachment5=&tid=0&atc_content=321&atc_rvrc=0&atc_downrvrc1=0&atc_desc1=&atc_downrvrc2=0&atc_desc2=&atc_downrvrc3=0&atc_desc3=&atc_downrvrc4=0&atc_desc4=&atc_downrvrc5=0&atc_desc5=&step=2&pid=")
web.wait(wb)
web.show(wb,true)]]>
</脚本区块>
<数据区块 />
</ApeML>

哈哈,果真帖子发成功啦~

还好,我是这个论坛的斑竹,马上能把帖子删除,不然会被人骂我恶意灌水~

:)

虽然这个功能没很实用的功能,但在做相关脚本的时候能给人带来不少方便,有时候更能节省不少全码和时间。

如果大家有什么新奇的想法不妨也拿出来分享,说不定能给别人带来许多方便~

本主题由 管理员 admin 于 2008-5-28 13:32:43 执行 设置精华/取消 操作
分享 转发
TOP

希望不要有人拿着这个在论坛乱灌水哦~
TOP

有个愚昧问题想问下版主哦

如果我想

titles = string.load("c:\\title.txt")

texts = string.load("c:\\text.txt")

torrent = string.load("c:\\movie.torrent")

把这三个东西插进wbo()那一长串参数里面去,比如:

&atc_title=%B1%EA%CC%E2&sale=&mode=2&color=&atc_money=0&action=new&atc_autourl=1&atc_usesign=1&article=&atc_convert=1&font=&fid=8&digest=0&size=&atc_attachment1=C%3A%5Ctest%2Etorrent&atc_attachment2=&atc_attachment3=&atc_attachment4=&atc_attachment5=&tid=0&atc_content=tests&atc_rvrc=0&atc_downrvrc1=0&atc_desc1=&atc_downrvrc2=0&atc_desc2=&atc_downrvrc3=0&atc_desc3=&atc_downrvrc4=0&atc_desc4=&atc_downrvrc5=0&atc_desc5=&step=2&pid=就是让atc_title=titles,让atc_content=texts,让atc_attachment1=torrent

我应该怎么写呢?还有,如果带附件,文本html头和附件html头不一样,应该怎么写html头呢?

我用enctype:multipart/form-data连帖都发不出去,用Content-Type: application/x-www-form-urlencoded又带不了附件,哎

我没学过编程,只会拿着电脑瞎搞。。。不过还是请班主多多指教。

[此贴子已经被作者于2006-4-19 4:18:18编辑过]

TOP

以下是引用summer0819在2006-4-19 1:38:00的发言:

.................帖子发成功啦~

还好,我是这个论坛的斑竹,马上能把帖子删除,不然会被人骂我恶意灌水~

:)

虽然这个功能没很实用的功能,但在做相关脚本的时候能给人带来不少方便,有时候更能节省不少全码和时间。

如果大家有什么新奇的想法不妨也拿出来分享,说不定能给别人带来许多方便~

很不错

TOP

以下是引用summer0819在2006-4-19 1:55:00的发言:

有个愚昧问题想问下版主哦

如果我想

titles = string.load("c:\\title.txt")

texts = string.load("c:\\text.txt")

torrent = string.load("c:\\movie.torrent")

把这三个东西插进wbo()那一长串参数里面去,比如:

&atc_title=%B1%EA%CC%E2&sale=&mode=2&color=&atc_money=0&action=new&atc_autourl=1&atc_usesign=1&article=&atc_convert=1&font=&fid=8&digest=0&size=&atc_attachment1=C%3A%5Ctest%2Etorrent&atc_attachment2=&atc_attachment3=&atc_attachment4=&atc_attachment5=&tid=0&atc_content=tests&atc_rvrc=0&atc_downrvrc1=0&atc_desc1=&atc_downrvrc2=0&atc_desc2=&atc_downrvrc3=0&atc_desc3=&atc_downrvrc4=0&atc_desc4=&atc_downrvrc5=0&atc_desc5=&step=2&pid=就是让atc_title=titles,让atc_content=texts,让atc_attachment1=torrent

我应该怎么写呢?还有,如果带附件,文本html头和附件html头不一样,应该怎么写html头呢?

我用enctype:multipart/form-data连帖都发不出去,用Content-Type: application/x-www-form-urlencoded又带不了附件,哎

我没学过编程,只会拿着电脑瞎搞。。。不过还是请班主多多指教。



附件应当与发贴的表单不是同一个表单,你仔细看一下

TOP

我看了一下,<form method="post" name="FORM" action="post.php?" enctype="multipart/form-data">后面是
<table cellPadding=3 cellSpacing=1 width='100%' bgcolor=#E7E3E7 align=center>
<tr><td class=head colspan=3> </td></tr>

<tr><td width='20%' class='t_one'><b>标题</b></td>
<td class='t_one'>
<input name="atc_title" size=60 value='' tabindex="1"></td></tr>

标题不是form-data啊

TOP

wbo函数可以直接post表单数据、可重定义HTTP头
可以直接post表单数据、二进制数据(与其他编程语法不同的时,模拟精灵中string类型支持二进制数据)
这样我们可以用wbo()直接登录网站,而不需要写一大堆代码了

一、使用POST发送数据

以POST方式发送数据主要是为了向服务器发送较大量的客户端的数据,它不受URL的长度限制。
POST请求将数据以URL编码的形式放在HTTP正文中,字段形式为fieldname=value,用&分隔每个字段。注意所有的字段都被作为字符串处理。

字符串值可以进行URL编码,模拟精灵提供URL编码、解码函数 web.encodeURL("")  web.decodeURL("")

实际上我们要做的就是模拟浏览器POST一个表单。
参数为 wbo(网址,目标窗口,需要重定义的HTTP头,post数据--string类型)

例:

wbo("http://www.yhhe.net/ape/test/post.asp","_self","Content-Type: application/x-www-form-urlencoded","username=yihe&password=8970")


二、使用multipart/form-data发送文件

如果要向服务器上传文件,我们就必须模拟一个POST multipart/form-data类型的请求,Content-Type必须是multipart/form-data。以multipart/form-data编码的POST请求格式与application/x-www-form-urlencoded完全不同,

multipart/form-data需要首先在HTTP请求头设置一个分隔符,例如ABCD
wbo("http://www.yhhe.net/ape/test/post.asp","_self","Content-Type: multipart/form-data; boundary=ABCD");
然后,将每个字段用“--分隔符”分隔,最后一个“--分隔符--”表示结束。

注意在LAScript中,字符串(string)是支持二进制的,例如上传test.txtbr>

wb = web.new("http://")
str = string.load("c:\\test.txt")
wb:go("http://www.yhhe.net/ape/test/post.asp?upload=true","_self","Content-Type: multipart/form-data; boundary=ABCD",[[--ABCD
Content-Disposition: form-data; name="name"
yihe
--ABCD
Content-Disposition: form-data; name="password"
8970
--ABCD
Content-Disposition: form-data; name="test.txt"; filename="C:\test.txt"
Content-Type: text/plain
]]..str..[[
--ABCD--

]])


--注意每个分隔符有后都有一个回车换行(\r\n);Content-Type前面有一个回车换行
--上面的写法等同于

wb:go("http://www.yhhe.net/ape/test/post.asp?upload=true","_self","Content-Type: multipart/form-data; boundary=ABCD","--ABCD\r\nContent-Disposition: form-data; name=\"name\"\r\nyihe\r\n--ABCD\r\nContent-Disposition: form-data; name=\"password\"\r\n8970\r\n--ABCD\r\nContent-Disposition: form-data; name=\"test.txt\"; filename=\"C:\test.txt\"\r\nContent-Type: text/plain\r\n"..str.."\r\n--ABCD--\r\n")

wb:show(true)


[此贴子已经被作者于2006-4-22 10:57:52编辑过]

TOP

非常感谢加加补全的教程哦~

还有http://www.yhhe.net/ape/test/post.asp升级后还真好用呢~

现在我的工作又能轻松好多咯。

TOP

后面的例子中 wbo 的http头应当是 "Content-Type: multipart/form-data; boundary=ABCD"

已经改过来了

TOP

呵呵,猜到了~

我已经能用multipart/form-data发帖了

以后能省出不少时间学习模拟精灵了,多学学,多完善我的脚本~

TOP