post 网页数据的问题,高手进.搞定立即给分 ( 积分: 100 )

  • 主题发起人 主题发起人 ma7k
  • 开始时间 开始时间
M

ma7k

Unregistered / Unconfirmed
GUEST, unregistred user!
我下载了一个delphi写的程序 通过嗅探他的post按钮 结果如下:
POST /gb.asp HTTP/1.1
Accept: Accept: */*, /gb.asp, 127.0.0.1
Content-Type: application/x-www-form-urlencoded
User-Agent: MyApp
Host: 127.0.0.1
Content-Length: 77
Cache-Control: no-cache

server=测试服务器&ck=留言成功&action=saveup&username=用户名&password=密码


他的post成功.
然后我用idhttp进行post,嗅探结果如下:
POST /gb.asp HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 149
Host: 127.0.0.1
Accept: text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)

server=%B2%E2%CA%D4%B7%FE%CE%F1%C6%F7%26ck%3D%C1%F4%D1%D4%B3%C9%B9%A6%26action%3Dsaveup%26username%3D%D3%C3%BB%A7%C3%FB%26password%3D%C3%DC%C2%EB

post没有成功! 我想得到和他一样的嗅探结果.注意对比嗅探结果 有好几处不同
 
就是转换成16进制而已:
Function URLEncode(Const msg: String): String;
Var
I: Integer;
Begin
Result := '';
For I := 1 To Length(msg) Do Begin
If msg = ' ' Then
Result := Result + '+'
Else If msg In ['a'..'z', 'A'..'Z', '0'..'9'] Then
Result := Result + msg
Else
Result := Result + '%' + IntToHex(Ord(msg), 2);
End;
End;
 
url编码只是一方面 我想可能是我们使用的控件不一样啊
他的 http/1.1 User-Agent: MyApp url未编码 (我不觉得是他写函数实现)
我的是 HTTP/1.0 User-Agent: Mozilla/3.0 url编码
难道post 数据还有几个控件??
 
你找到idhttp里面那个datm所说的函数 改一下 让idhttp post的时候不执行编码转换就基本一样了
如果要求post出去一样 那用idhttp必须进行很多修改 太麻烦 用idhttp难以满足很多网站的要求 我记得以前post一个QQ的网页就是这样 怎么改 改很多 最后post出去的字符串都延时才拦截到 服务器就把要求当非法处理了 所以后来我就不用idhttp了
 
楼上的兄弟使用什么控件?
 
自己已经搞定 谢谢 支持
 
后退
顶部