200分 帮看下这个网站是不是不让模拟提交验证码? idhttp post

chinawcs 2011-07-14 09:22:31
网址 : http://www.cppinfo.com/pdm/business/site/cip/siteAppNo.jsp
验证码地址:http://www.cppinfo.com/pdm/business/site/util/imageForCip.jsp?isDecorator=false
测试id : cip核字号2011075556 再填入验证码 点验证 会有页面数据显示

环境 : delphi 7+indy10 winxp sp3 ie8
我是这么做的 先 get 获取 验证码 再模拟post 总是获取不到跳转的页面

代码 :

var
stream: TStringStream;

s:string;

begin
EditURL.Text :='http://www.cppinfo.com/pdm/business/site/cip/siteAppNo.jsp';
with IdHTTP do
begin
Request.Accept := 'image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap,'
+ 'application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight, application/msword, */*';
Request.AcceptEncoding :='gzip, deflate';
Request.AcceptLanguage :='zh-cn';
Request.CacheControl :='no-cache';
Request.Connection :='Keep-Alive';
Request.ContentLength :=35;
Request.Host :='www.cppinfo.com';
Request.Referer :='http://www.cppinfo.com/pdm/business/site/cip/siteAppNo.jsp';
Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)';
Request.ContentType := 'application/x-www-form-urlencoded';
HandleRedirects := true;

AllowCookies :=true;
end;


stream:=TStringStream.Create('approveNo=2011075556&captchaNo='+edit2.Text);

try

try

s:=IdHTTP.Post(EditURL.Text, stream );
Memo1.Clear ;
Memo1.Lines.Add(s );

except
ShowMessage('login fail');
end;

finally
stream.Free ;
end;
end;





是验证码不对还是 此网站有防护 不可以被模拟post
...全文
470 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinawcs 2011-07-20
  • 打赏
  • 举报
回复
这个网站 真无法 模拟提交了吗 ?

chinawcs 2011-07-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 adslan 的回复:]
没看到你POST提交时 带上了验证码的 COOKIE信息
用WPE 截自己写的程序封包 再跟截浏览器的对比
这样容易找原因
[/Quote]

wpe 有毒呀
另外 我关联了 IdCookieManager1 post时肯定是带上了 cookie
扯出一片天 2011-07-15
  • 打赏
  • 举报
回复
把我看的是稀里糊涂的
chinawcs 2011-07-15
  • 打赏
  • 举报
回复
需要整理下思路 界面上我放了 IdCookieManager1 并关联了 idhttp

首先是 get 获取到 验证码图片 这里我保存了一个图片 肉眼识别后 供 post 测试

虽然 get时 确实获取了cookie post 时也带了 但是还是 无法返回IE的 数据

post 之后的 获取的 html 显示 还停留在 验证码提交页并没有 跳转

请大家注意 验证码提交页面html post
<FORM method=post name=cipForm target=_parent>

在父窗口打开 是不是 这里的问题 我搞不懂
HandleRedirects := true;也设置了
山东蓝鸟贵薪 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
你找过wpe,然后在网站上正常提交,看看wpe抓包的内容,跟你自己的比对一下
[/Quote]
我也是这样建议你跟踪测试一下看看到底这个返回值在那个地方变动了
v1srine 2011-07-15
  • 打赏
  • 举报
回复
帮顶一下!
chinawcs 2011-07-15
  • 打赏
  • 举报
回复
还有没有人了
Mit1208 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cntigercat 的回复:]
POST的时候带上获取验证码时的Cookie
[/Quote]

Delphi7在使用idhttp的时候默认是不保存cookie的,要自己将获取验证码的cookie截取后然后
idhttp.request.customheaders.text:='cookie:' + COOKIE;
指定后再POST才可以!
INDY10直接GET验证码然后POST就可以了,不用指定COOKIE!
chinawcs 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cntigercat 的回复:]
POST的时候带上获取验证码时的Cookie
[/Quote]

哦 原来是这样 我再分析下
cntigercat 2011-07-15
  • 打赏
  • 举报
回复
POST的时候带上获取验证码时的Cookie
shijies 2011-07-15
  • 打赏
  • 举报
回复
建议将代码分成两部分检查,第一部分检查能否得到验证码,第一部分检查根据验证码能否进入页面。
ADSLAN 2011-07-15
  • 打赏
  • 举报
回复
没看到你POST提交时 带上了验证码的 COOKIE信息
用WPE 截自己写的程序封包 再跟截浏览器的对比
这样容易找原因
chinawcs 2011-07-14
  • 打赏
  • 举报
回复
现在 200 分 看来谁也不稀罕了
chinawcs 2011-07-14
  • 打赏
  • 举报
回复
我用的是 httpwatch

IE 上操作 正常 模拟的post 返回的字符串 不是IE上的结果

bdmh 2011-07-14
  • 打赏
  • 举报
回复
你找过wpe,然后在网站上正常提交,看看wpe抓包的内容,跟你自己的比对一下

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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