如何用程序实现网站的用户登录(200分)

  • 主题发起人 主题发起人 whj2000
  • 开始时间 开始时间
zyy04是如何实现的,能说一下吗,多谢了
 
对于单Frame的,可以用WebBrowser控件,下网页。
然后,分析该网页的源代码,找form和input。
接着,分析form和input,找出有用的部分。
最后,(1)生成XXX,用TWebBrowser.Navigator('XXX');登陆。
   (2)用代码自动填充输入框的内容,具体的代码自己找找吧,我忘了。
(1)对大部分网页有效,对CGI的post好象有点问题。
 
给你发了一个例子。看一下吧!
 
给我也发一个吧
 
感谢zyy04发了一个例子程序给我,我看了一下基本的方法好像与honestman所说的(2)
中的方法类似,只是对不同的网站需要考虑一些特殊的情况,如多个frame,一个网页
上有多个form,一个form上需要找准用户名input与密码input、以及登录按钮等等,实现
起来比较麻烦,但这已是我见到的最好的方法了。
另外honestman所说的(1)方法也是一个解决方案,我试过,但好像只对一部分网站有效,
原因我也不知道。
很遗憾我看不懂timerri的程序,可能是我的编程能力还不够,那位大侠看得明白,或有
更好的方法,请多多指教。
 
1的方法,只对get型的表单有效。
 
要想对不同网站都适合,恐怕是不行的,除非这些网站都有类似的准则。
但是针对一个忘站还是可以的。
我的那个程序实现的就是http协议的post方法
最重要的是这一部分
一下自定义http头,其实我该用Tstrings就简单多了
sends:='POST /regurl/regform.asp HTTP/1.1'+#13#10;
sends:=sends+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*'+#13#10;
sends:=sends+'Accept-Language: zh-cn'+#13#10;
sends:=sends+'Content-Type: application/x-www-form-urlencoded'+#13#10;
sends:=sends+'Accept-Encoding: gzip, deflate'+#13#10;
sends:=sends+'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'+#13#10;
sends:=sends+'Host: db.sohu.com'+#13#10;
对于数据,必须经过nmurl编码。以下实现数据段(sendp就是数据段)
url.InputString := combobox2.Text;
sendp:='Step=Create&ClassKey='+url.Encode ;
url.inputstring := adoquery1.fieldvalues['文章名']+' 发布者:'+ adoquery1.fieldvalues['作者'] ;
sendp:=sendp+'&SiteName='+url.Encode;
url.inputstring:=edit5.text+'?id='+inttostr(adoquery1.fieldvalues['id']) ;
sendp:=sendp+'&URL='+url.Encode;
url.inputstring:= edit6.text;
sendp:=sendp+'&Description='+url.Encode;
sendp:=sendp+'&Keywords=';
url.inputstring:= edit3.text;
sendp:=sendp+'&EffDate=&ExpDate=&Contact=&EMail='+url.Encode+'&B1=%B5%DD%BD%BB';
sends:=sends+'Content-Length: '+inttostr(length(sendp))+#13#10;
sends:=sends+'Connection: Keep-Alive'+#13+#10+#13#10 +sendp;
clientsocket1.Socket.SendText(sends);

其实很简单的一个东西,不要想得太复杂
 
多人接受答案了。
 
后退
顶部