aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 18717|回复: 14

新手对于POST的一些困惑!..

[复制链接]

2

主题

29

回帖

190

积分

一级会员

积分
190
发表于 2011-11-12 14:08:15 | 显示全部楼层 |阅读模式
本帖最后由 bdancerlc 于 2011-11-12 14:09 编辑

小弟正在学习post相关的知识!
看了好多帖子,回复之类的!.
现在有点糊涂了...
有的要写消息头,这样的方式我试过,可是总是提交不成功!
这个要写消息头的方式有许多困惑:
1、写消息头的时候,网页分析出来的消息头有很多,是需要一个一个都写吗?还是需要筛选过滤?如果要过滤,如何过滤筛选呢?
比如:http://survey.ent.sina.com.cn/survey.php?id=62752&dpc=1(这个投票我拿来测试用的!)
响应头信息原始头信息
DateSat, 12 Nov 2011 05:18:36 GMT
ServerApache
Set-CookieU_TRS2=000000f6.4a503f92.4ebe01ac.8f1882da; path=/; domain=.sina.com.cnvote_62752=1; expires=Sat, 12-Nov-2011 06:18:36 GMTBIGipServerpool_dpool2_web2=1443251210.20480.0000; expires=Sat, 12-Nov-2011 05:23:16 GMT; path=/
Locationhttp://survey.ent.sina.com.cn/result/62752.html?f=1
Cache-Controlmax-age=120
ExpiresSat, 12 Nov 2011 05:20:36 GMT
DPOOL_HEADER10.69.6.86
Content-Length0
Connectionclose
Content-Typetext/html
请求头信息原始头信息
Hostsurvey.ent.sina.com.cn
User-AgentMozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0
Accepttext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Languagezh-cn,zh;q=0.5
Accept-Encodinggzip, deflate
Accept-CharsetGB2312,utf-8;q=0.7,*;q=0.7
Connectionkeep-alive
Refererhttp://survey.ent.sina.com.cn/survey.php?id=62752&dpc=1
CookieU_TRS1=0000008c.a5e14aa3.4e2eb8ba.5c089038; UOR=down1.tech,down.tech,; vjuids=4187f8685.1316681a7e9.0.ff1b1df2ee98d; vjlast=1320899639.1321075108.11; SINAGLOBAL=121.61.9.243.172091311684796422; ULV=1321075110316:52:10:9:000000f6.a8e271b6.4ebe01a4.93cb0688:1321003363447; ALLYESID4=0011090523204545633807; __utma=269849203.835730727.1318501657.1318501657.1318501657.1; __utmz=269849203.1318501657.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%CF%E0%C7%D7%B6%D4%CF%F3%C8%E7%BA%CE%B2%BB%DE%CF%DE%CE; mvsign=v%3DQV%60v%3Adv0HTCJ%40i8FwC7o; _s_upa=1; Apache=000000f6.a8e271b6.4ebe01a4.93cb0688; SGUP=211522211304221434221a202437092432092c10152dd0a02d50a02d20692dc0552e20652f2024

2、cookie的处理...Set-Cookie和Cookie这两个都需要设置么?...
然后是不用写消息头的:inet.http
在论坛中看帖说inet.http可以不用写消息头,我也试过了!
例如:我用   网页表单神捕   进行消息的捕获..提交依然不成功!..
  1. import inet.http;
  2. import console;
  3. var formEncode = inet.url.encode;
  4. var http = inet.http();
  5. var html = http.post("http://survey.ent.sina.com.cn/polling.php", "poll_id=62752&q_4867[]=32468&x=38&y=16",);
  6. console.log(html)
  7. console.pause();
  8. ;
复制代码
这个不用写消息头的我有如下问题:
1、这里面所有带cookie的网页都可以不用设置Cookie吗?
2、这个网页还算比较简单,所有我拿这个网页来做实验,做了诸多尝试,依然不成功,希望路过的前辈们,能给点指点!或者能做出这个网页的提交代码!...
-------------------------------------------------------------------------------------------------------------------------
注:这个投票有换IP 的限制!..手动断开链接ADSL拨号即可!....


52

主题

1270

回帖

7276

积分

荣誉会员

积分
7276
发表于 2011-11-12 18:25:25 | 显示全部楼层
看该贴 http://bbs.aardio.com/thread-4015-1-1.html
用inet.http库吧,不需要理会cookie

65

主题

880

回帖

5033

积分

荣誉会员

积分
5033
发表于 2011-11-12 19:05:59 | 显示全部楼层
一般不用管请求头的  是不是你提交的数据不对..

2

主题

29

回帖

190

积分

一级会员

积分
190
 楼主| 发表于 2011-11-13 04:33:51 | 显示全部楼层
xj199241 发表于 2011-11-12 19:05
一般不用管请求头的  是不是你提交的数据不对..

按照两位老大的思路,我又试了几遍!
首先排除语法,和用法的问题!我拿其他的网站做了测试!
比如:115网盘的POST方式登录!
115网盘登录成功,很正常!...
然后又多抓了几次包,对比之后发现应该是POST请求的提交数据的问题!
抓包的提交数据如下:
  1. q_4867%5B%5D=32468&poll_id=62752&x=19&y=12
  2. q_4867%5B%5D=32468&poll_id=62752&x=36&y=9
  3. q_4867%5B%5D=32468&poll_id=62752&x=22&y=15
  4. q_4867%5B%5D=32468&poll_id=62752&x=41&y=18
  5. q_4867%5B%5D=32468&poll_id=62752&x=33&y=14
  6. q_4867%5B%5D=32468&poll_id=62752&x=18&y=18
  7. q_4867%5B%5D=32468&poll_id=62752&x=29&y=18
复制代码
所以应该是这个X,Y 是变值的原因吧!?
难道是通过JS加密运算之后得到的结果吗?
我看了半天里面的JS代码,还是没能看出个所以然!
不知道有什么好的方法可以快速得到这个算法呢?

点评

坐标值随机取值,甚至不设置坐标值都可以的,自己抓包调试吧  发表于 2011-11-13 13:35
X,Y是submit按钮被点击时的鼠标相对于按钮左上角的位置  发表于 2011-11-13 11:39

2

主题

29

回帖

190

积分

一级会员

积分
190
 楼主| 发表于 2011-11-13 04:34:20 | 显示全部楼层
qqmmcc 发表于 2011-11-12 18:25
看该贴 http://bbs.aardio.com/thread-4015-1-1.html
用inet.http库吧,不需要理会cookie

按照两位老大的思路,我又试了几遍!
首先排除语法,和用法的问题!我拿其他的网站做了测试!
比如:115网盘的POST方式登录!
115网盘登录成功,很正常!...
然后又多抓了几次包,对比之后发现应该是POST请求的提交数据的问题!
抓包的提交数据如下:
  1. q_4867%5B%5D=32468&poll_id=62752&x=19&y=12
  2. q_4867%5B%5D=32468&poll_id=62752&x=36&y=9
  3. q_4867%5B%5D=32468&poll_id=62752&x=22&y=15
  4. q_4867%5B%5D=32468&poll_id=62752&x=41&y=18
  5. q_4867%5B%5D=32468&poll_id=62752&x=33&y=14
  6. q_4867%5B%5D=32468&poll_id=62752&x=18&y=18
  7. q_4867%5B%5D=32468&poll_id=62752&x=29&y=18
复制代码
所以应该是这个X,Y 是变值的原因吧!?
难道是通过JS加密运算之后得到的结果吗?
我看了半天里面的JS代码,还是没能看出个所以然!
不知道有什么好的方法可以快速得到这个算法呢?

65

主题

880

回帖

5033

积分

荣誉会员

积分
5033
发表于 2011-11-13 09:34:06 | 显示全部楼层
那你看源码  哪里有x y字段

117

主题

1103

回帖

6572

积分

六级会员

积分
6572
发表于 2011-11-13 10:08:39 | 显示全部楼层
x,y  我感觉是 坐标吧
抱歉没看 猜的

他可能是 你点击 登录按钮的 相对坐标

点评

服务器端能 判断出这个坐标么? 如果是POST的话,不用点击按钮如何获取坐标值呢?... ---------------------------------------------- 如果在按钮的长宽内进行随机取值不知行不行?...我先试试!...  发表于 2011-11-13 13:02

5

主题

58

回帖

753

积分

荣誉会员

积分
753
发表于 2011-11-13 11:37:53 | 显示全部楼层
本帖最后由 roking 于 2011-11-13 11:48 编辑

根据投票网站的反作弊措施不同需要注意:
1、是否需要合法的请求来源:http.post() 的referer参数,此例中的应该为:
     Referer: http://survey.ent.sina.com.cn/survey.php?id=62752&dpc=1   
2、控制投票次数---IP限制,这是服务器端的验证,不好作假,可以通过更改IP来进行(ADSL重拨或更换代理);
      过IP限制的一个技巧:对于原始提交是POST方式时,我们可以先试一下把POST方式改成GET方式直接输入到浏览器中请求,看能否成功,可以的话说明服务器端没有做POST还是GET方式的校验,同时也没有做来路检验,这时可以构造个GET请求URL,以此URL,作为一个图片的源url在支持外链图片的热门论坛的热门贴子上跟帖(最好是第一页),这样就可以获得源源不断的IP投票支持了(原理自己想:))。
3、控制投票次数---cookies记录投票历史,这种方式可以通过清除cookies来躲过。

我常用fiddler来调试http请求。它可以在发包、收包时设置中断暂停,使你有机会在浏览器接受前以及请求发往服务器前修改数据包。




点评

真棒: 5.0
很好的思路  发表于 2012-2-19 11:23
真棒: 5
我重新POST了,仔细观察发现应该是坐标值,这个坐标值,服务器能识别?如果是POST那这个坐标值是不是应该可以在一个范围内进行随机取值了?  发表于 2011-11-13 13:07

52

主题

1270

回帖

7276

积分

荣誉会员

积分
7276
发表于 2011-11-13 13:34:01 | 显示全部楼层
你是凭什么确定不成功呢?
该投票时有跳转,自己抓包看看就发现了,投票页没消息返回,跳转后就有返回,模拟一下跳转就可以了。

117

主题

1103

回帖

6572

积分

六级会员

积分
6572
发表于 2011-11-13 13:50:46 | 显示全部楼层
随机取 可以的

2

主题

29

回帖

190

积分

一级会员

积分
190
 楼主| 发表于 2011-11-13 13:51:52 | 显示全部楼层
qqmmcc 发表于 2011-11-13 13:34
你是凭什么确定不成功呢?
该投票时有跳转,自己抓包看看就发现了,投票页没消息返回,跳转后就有返回,模 ...

我是用【wb.go("http://survey.ent.sina.com.cn/result/62752.html?f=1/")】这一句来查看投票总票数的变化的!..每次post之后票数没变,所以……!应该是坐标这点不用怀疑了,可是这个坐标我想来想去都觉得没什么意义,可是不管我设不设置坐标,随机的也好,POST 之后票数始终没有变化!...不知道还有没有其他的因素导致POST不成功!...完全没有头绪了!...

5

主题

58

回帖

753

积分

荣誉会员

积分
753
发表于 2011-11-13 18:58:10 | 显示全部楼层
本帖最后由 roking 于 2011-11-13 19:00 编辑

这个投票看了下,不用清除cookies,仅换IP就行,那个x,y没用。

这句改一下即可:

var html = http.post("http://survey.ent.sina.com.cn/polling.php", "poll_id=62752&q_4867[]=32468",,"http://survey.ent.sina.com.cn/survey.php?id=62752&dpc=1");

也就是必须加上请求来源页面地址即可。

评分

参与人数 2 +100 +20 收起 理由
quicker + 50
qqmmcc + 50 + 20

查看全部评分

2

主题

29

回帖

190

积分

一级会员

积分
190
 楼主| 发表于 2011-11-13 21:10:53 | 显示全部楼层
roking 发表于 2011-11-13 18:58
这个投票看了下,不用清除cookies,仅换IP就行,那个x,y没用。

这句改一下即可:

谢谢您的帮助!
不过好像没有成功!
我观察了一下,32468号,也就是那个“陈辰”的,我不POST,票数也会增加!
所以我果断换了个,例如:32470号,程雷...结果POST 之后还是没有反应,票数没有增加!...
我实在有点想不通了!...
这个页面的POST 的相关参数很少,为什么就是POST 不通呢!...

52

主题

1270

回帖

7276

积分

荣誉会员

积分
7276
发表于 2011-11-14 01:23:58 | 显示全部楼层
学习post 首先要抓成功的包与不成功包两者作为比较,该投票结果网页显示是有点延迟,单凭这个判断并不准确,况且很多人同时在投票难判断;做好程序之后,如果不成功要抓包分析,分析程序的包与手工的包有何不同,这样你才知道缺少什么来补充测试。roking 的 是对,下面是完整的程序,投过票与没投过票的返回是不一样的,自己找包学习吧。投一次换 IP  与 不换 ip 作比较 你就清晰了。


import win
import inet.http;
import console;
var http = inet.http();
var url = "http://survey.ent.sina.com.cn/polling.php"
var postdata = "q_4867%5B%5D=32510&poll_id=62752"
var referer = "http://survey.ent.sina.com.cn/survey.php?id=62752&dpc=1"
var html = http.post(url,postdata,,referer)
if(html){
   
if(string.find(html,"您已经投过票啦")){
        win.msgbox(
"已投过票","aardio")
    }
   
else {
        win.msgbox(
"投票成功","aardio")
    }

}
console.log(html)

点评

真棒: 5.0
真棒: 5
谢谢了,从你这里学到不少东西!...  发表于 2011-11-14 12:41

7

主题

115

回帖

747

积分

三级会员

积分
747
QQ
发表于 2012-2-13 17:37:54 | 显示全部楼层
站位学习,post
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-3-20 04:13 , Processed in 0.090873 second(s), 24 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表