发表于: 2012-09-22 20:38:45
上面这个网页用idhttp打开居然只显示几行java代码,请问是什么原因?是js输出? 以下是IDHTTP获得的内容,与实际网页相差很大,为什么? <script language="javascript"> var url=document.location.href; var s = url.indexOf("?"); var redirectUrl=''; var domain=document.domain.substr(document.domain.indexOf(".")+1); if(s>0) { redirectUrl=url.substr(s+1); SetCookie("_Z3nY0d4C_","37XgPK9h",365,"/",domain); document.location.href=redirectUrl; } else { document.location.href="http://www."+domain; } function SetCookie (name, value) { var expdate = new Date(); var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; if(expires!=null && expires>=0) expdate.setTime(expdate.getTime() + ( expires * 24*60*60*1000 )); document.cookie = name + "=" + escape (value) +((expires == null || expires < 0) ? ((expires==-1)?"; expires=-1":"") : ("; expires="+ expdate.toGMTString())) +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain)) +((secure == true) ? "; secure" : ""); } </script> |
#2 得分:0回复于: 2012-09-23 09:57:50
document.location.href=redirectUrl;
document.location.href="http://www."+domain; 显然是重定向了。。。 |
|
|
#3 得分:0回复于: 2012-09-23 11:14:21
IdHTTP1.HandleRedirects := True;试试
|
#4 得分:0回复于: 2012-09-23 11:30:49
IdHTTP1.HandleRedirects := True;试试
这个试过了,没有效果。 |
|
#5 得分:0回复于: 2012-09-23 13:34:57
因为它这个跳转是写在js中的,idhttp并不会去执行它。
你只能分析这段js代码,把它要做的事在自己的代码中写上。比如为idhttp设置cookie、得到跳转地址并用idhttp去访问。 |
|
#6 得分:0回复于: 2012-09-23 14:12:49
idhttp只是HTTP网络通讯控件.又不是浏览器.不回执行JS脚本.
|
|
|
#7 得分:0回复于: 2012-09-23 14:13:57
要自己去里面抠了。。。
|
#8 得分:0回复于: 2012-09-23 16:17:01
看来只能抓包分析,看看最终到底访问了哪个网站了。
|
|
#9 得分:0回复于: 2012-09-24 08:35:26
抓包也没看出重定向哪里。
请高手看看,那个JS代码把网址重定向哪里了?谢谢! |
|
#10 得分:0回复于: 2012-09-24 12:15:19
自己最后顶一下。
|
|
#11 得分:0回复于: 2012-09-24 14:19:25
document.location.href=redirectUrl; document.location.href="http://www."+domain; 决定了最终到底访问了哪个网站了 只是,那个网站可能还根据cookies和ref才显示真正的网页 |
|
#12 得分:0回复于: 2012-09-25 09:23:40
与cookies无关,因为我没登陆这个页面,照样可以看到内容
|
|
#13 得分:0回复于: 2012-09-25 09:34:29
cookies并不是要登录才有用 我觉得你可以用IE访问,抓包,找到跳转的地址,然后用idhttp访问这个地址,如果和cookies无关的话,这样就可以访问。 |
|
#14 得分:0回复于: 2012-09-25 10:23:32
有些网站会判断如果是indy控件访问的话会做相应处理,你把idhttp的request.UserAgent改一下,伪照成别的浏览器试试
|
|
#15 得分:0回复于: 2012-09-25 10:33:20
楼上,我改了,也没用。
|
|
#16 得分:40回复于: 2012-09-25 11:33:01
抽几分钟帮你试了下
关键就在cookie js中这一行SetCookie("_Z3nY0d4C_","37XgPK9h",365,"/",domain); 第一次访问这页面,会判断上面这个cookie,如果错误就调用js设置这个cookie(但在idhttp中js是不会运行的),如果正确就给出正确页面内容。 帮你写了段代码,可以正常得到页面内容。
Memo1中能正确得到页面内容。用了一个自己写的GetStr函灵敏,要uese StrUtils D7+indy9通过测试 |
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发