如何修改TWebBrowser提交到服务器上的post数据

手指风 2008-03-05 10:56:11
我写了一个自动登陆的程序,但服务器上有检查使用程序登陆的机制,根据我对http抓包分析.他们的检查是应该是通过提交代码的Onbeforepaste事件把鼠标点击的坐标一起提交,因为我的程序里直接使用了olevariant的click方法,所以提交上去的坐标都是(0,0),所以我需要在BeforeNavigate2里对postdata进行修改.
procedure TFrm_Main.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
iLoop:Integer;
PostStr:String;
x,y:Integer;//点击坐标
Rx,Ry:Integer;
begin
Randomize;
Rx:=Random(73);
Ry:=Random(23);
PostStr:='';
x:=-1;
y:=-1;
if Length(PostData)>0 then
begin
for iLoop:=0 to VarArrayHighBound(PostData,1) do
begin
PostStr:=PostStr+Chr(Byte(PostData[iLoop]));
end;
if (Pos('.x=',PostStr)>0) and (Pos('.y=',PostStr)>0) then
begin
AnsiReplaceText(PostStr,'.x=0','.x='+inttostr(Rx));
AnsiReplaceText(PostStr,'.y=0','.y='+inttostr(Ry));
end;
showmessage(PostStr);
end;
end;
以上代码的AnsiReplaceText没有替换成功字符,而通过上面对postdata的处理,结果会把post上去的数据的&分割符号都去掉.还有如何把修改后的数据重新封到OleVariant进行提交呢?
...全文
304 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coder1035 2008-03-11
  • 打赏
  • 举报
回复
直接使用idHttp吧,想怎么控制都可以!
手指风 2008-03-10
  • 打赏
  • 举报
回复
楼上的还是没明白我的意思,我知道调用click可以提交页面,关键是这个方法提交的数据会同时把你在点击图片的相对坐标一起提交上去,而这个坐标如果是用鼠标提交的不会是(0,0),而调用Click方法绝对是(0,0),我无法修改这个坐标,修改了postdata数据后提交的还是(0,0),没修改过来
蒋晟 2008-03-07
  • 打赏
  • 举报
回复
找到Image的IHTMLElement接口之后用IHTMLElement.Click
手指风 2008-03-06
  • 打赏
  • 举报
回复
还是没人回啊?
手指风 2008-03-06
  • 打赏
  • 举报
回复
看来我的问题是不会有人来解决了
手指风 2008-03-06
  • 打赏
  • 举报
回复
自己顶
手指风 2008-03-05
  • 打赏
  • 举报
回复
顶一个
aniugee 2008-03-05
  • 打赏
  • 举报
回复
AnsiReplaceText(const AText, AFromText, AToText: string): string;

接分。
手指风 2008-03-05
  • 打赏
  • 举报
回复
分不够,我可以再加,把我所有的分奉上都ok
手指风 2008-03-05
  • 打赏
  • 举报
回复
csdn上的高手呢
手指风 2008-03-05
  • 打赏
  • 举报
回复
up

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧