问题描述
- 求助!!delphi模拟登录博客园并发帖!!
-
百度未果 请兄弟们给出解决思路 最好再给出代码或者帮看下下面的代码问题处在哪里怎么扩充!!谢谢procedure TForm1.Button1Click(Sender: TObject);
var postList:TStrings;
Response:TStringStream;
url:string; myIH:TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1:TIdSSLIOHandlerSocketOpenSSL;
begin
Response:=TStringStream.Create('');
postList:=TStringList.Create;
try
myIH:=TIdHTTP.Create(nil);
IdSSLIOHandlerSocketOpenSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
myIH.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
myIH.HandleRedirects:=True; myIH.Request.UserAgent:='Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)';
// myIH.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)';
postList.Add('__EVENTTARGET=');
postList.Add('__VIEWSTATE=/wEPDwUJLTI5NjAzODk2ZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQULY2hrUmVtZW1iZXKHW0DW4nQrSrBHBomKrt3/MjtBLA==');
postList.Add('__EVENTVALIDATION=/wEWBQKE2u7lCQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDO8x1Jd0k/hBY1a/6Yl9fTpP16ti');
postList.Add('input1=@@@@');
postList.Add('input2=@@@@');
postList.Add('chkRemember=');
postList.Add('btnLogin=登 录');
myIH.Post('http://passport.cnblogs.com/login.aspx',postList,Response);
finally
Memo1.Lines.Text := Utf8ToAnsi(Response.DataString);
Response.Free;
postList.Free;
end;
end;
解决方案
用twebbrowser好了
解决方案二:
建议使用TWebbrowser,自己建议一个浏览器,快捷方式录入用户名、密码。可以浏览自己带支的网站。
解决方案三:
先用Http抓包工具,获得各个动作的动作包协议数据,然后使用HttpRequest等之类的东西,直接模拟提交就行了。