用idhttp的post登陆网站的问题!!!困扰了N天了~~ ( 积分: 200 )

  • 主题发起人 主题发起人 dfwforce
  • 开始时间 开始时间
D

dfwforce

Unregistered / Unconfirmed
GUEST, unregistred user!
地址:http://www.starclicker.com/index.php?ref=ptcforce

近来做了个登陆特定类型网站的程序,其他的网站都没问题,就单单上面那个怎么也登陆不进.
代码如下:
ID:=TIdHTTP.Create(nil);
IC:=TIdCookieManager.Create(nil);
ID.CookieManager :=IC;
ID.ProtocolVersion :=pv1_1;
ID.AllowCookies:=true;
ID.HandleRedirects :=true;
ID.HTTPOptions:=[hoForceEncodeParams];
ID.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
//ID.Request.AcceptEncoding:='gzip, deflate';
ID.Request.AcceptLanguage:='zh-cn';
ID.Request.Accept :='image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*';
//ID.Request.ContentType :='text/html; charset=iso-8859-1';
ID.Request.ContentType :='application/x-www-form-urlencoded';
ID.Request.CacheControl :='no-cache';
ss:=tstringlist.Create;
GoUrl:=Website+'/index.php?view=login&action=login&'
ss.Add(pp); //pp为登录名,密码等等,&returnTo=&id=&ac=&step=&ptype=&form_user='+UserID+'&form_pwd='+pw;
try
txt:=id.post(GoUrl,ss);
except
txt:='timeout';
end;
ss.Free;
怎么提交都是回到登陆页面.indy从9.0--10.0.76都试过了,还是不行,请帮帮忙,谢谢了~~`
 
地址:http://www.starclicker.com/index.php?ref=ptcforce

近来做了个登陆特定类型网站的程序,其他的网站都没问题,就单单上面那个怎么也登陆不进.
代码如下:
ID:=TIdHTTP.Create(nil);
IC:=TIdCookieManager.Create(nil);
ID.CookieManager :=IC;
ID.ProtocolVersion :=pv1_1;
ID.AllowCookies:=true;
ID.HandleRedirects :=true;
ID.HTTPOptions:=[hoForceEncodeParams];
ID.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
//ID.Request.AcceptEncoding:='gzip, deflate';
ID.Request.AcceptLanguage:='zh-cn';
ID.Request.Accept :='image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*';
//ID.Request.ContentType :='text/html; charset=iso-8859-1';
ID.Request.ContentType :='application/x-www-form-urlencoded';
ID.Request.CacheControl :='no-cache';
ss:=tstringlist.Create;
GoUrl:=Website+'/index.php?view=login&action=login&'
ss.Add(pp); //pp为登录名,密码等等,&returnTo=&id=&ac=&step=&ptype=&form_user='+UserID+'&form_pwd='+pw;
try
txt:=id.post(GoUrl,ss);
except
txt:='timeout';
end;
ss.Free;
怎么提交都是回到登陆页面.indy从9.0--10.0.76都试过了,还是不行,请帮帮忙,谢谢了~~`
 
Params := 'view=login&action=login&returnTo=&id=&ac=&step=&ptype=&form_user='+UserID+'&form_pwd='+pw';
Stream := TStringStream.Create(Params);
txt := ID.Post(Website+'/index.php', Stream);
 
直接用get试试
id.get(Website+'?returnTo=&id=&ac=&step=&ptype=&form_user='+UserID+'&form_pwd='+pw)
 
想赚E-GOLD是吧,再加200分,告诉你怎么弄
 
to 99koo
就是想赚EG啦,要是成了的话,再加200分不成问题的,到目前为止就只有这家PTC网站进不去
to lcyandzj
用get是不行的,人家网站的表单是用post提交的
 
网址哪儿 有时是post的地方 用get 可好使了
我试过了
 
试过用get不行了
 
原因是网站为了防止你从外部提交数据,加上了对按钮的判断
你需要在POST的数据里加上 submit=XXXX 就OK了
 
找到问题所在了,但还是没有解决.
问题是这样的:
登陆的时候要输入图灵码,这个图灵码的url可以得到,但这个时候用idhttp去get图灵码的url的话,出来的数字就变了(这个时候直接用webbrowse浏览图灵码的url出来的数字却是正确的)
 
用99koo的办法行了吗?,楼主的问题好像找到submitonce(this)这个函数可以解决一部分问题,就是看他是不是还搞了其他什么手脚(找了半天没找到),Form的method是Post,不过这个网页倒是挺强的,直接看源代码都不行,非要通过WebBrower的方式直接获得才可以,个人看法,仅供参考
 
看看这个
http://www.starclicker.com/tn.php?random_num=498584
有验证码
你觉得可行吗?
 
to chenybin
因为截包看到post的数据格式是这样的: PHPSESSID=XXXXXXXXXXXXXXXXX&returnTo=&id=&ac=&step=&ptype=&form_user=XX&form_pwd=XX&tn_gfx_check=XXX&tn_random_num=XXX

也没有看到有submit=XXXX这样的参数,曾经试过加上也不行

to iamy
就是这个验证码为什么用idhttp去get和webbrowse浏览出来的结果会不同的?
 
因为验证码的作用就是防止恶意post
原理是在服务端产生一个随机字符串,然后把它绘到图片上去,再把图片发给客户端,
同时把这个字符串保存在服务端

用户根据得到的图片上的字符串输入到input里post的时候发送给服务端
服务端检测用户发过来的字符串是否和发送给用户的的图片上的字符串相同,
以次来判断用户发送的信息的合法性。

解决这个问题的关键是你要想办法解析出图片上的字符串是什么
然后在把它发给服务端, 不过很有难度啊,因为图片上有一些起到干扰作用的图形,
比如随机绘制的点,等等。
 
这个网站的图片好象不是随机绘制的
有个对应关系
我想这个应关系应该是无规则的
 
问题是我得不到正确得图片啊~~
过程是这样的:
1.先idhttp.get(登陆的页面)
2.从返回的数据中找到验证码的url:http://www.starclicker.com/tn.php?random_num=498584
然后这里就出问题了,同一个url用idhttp去get和用IE直接浏览的结果是不同的,出来的是两幅不同的图片.IE出来的那幅图片是正确的.
 
?random_num=498584
能用这中方式得到验证码服务器索性不要弄验证码了
上面的数字对应一个图片
但和图片上的数字不对应
 
做个例子而已嘛,url当然是每次不同啦

刚才又试了一下,同一个验证码的地址同一时间我用了3种方式去取,结果出来的是3副不同的图片...
 
哎~
劝你还是放弃吧
 
问题解决了,谢谢各位,原因是Cookie没搞好~~~
 
后退
顶部