首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Delphi 模擬登入博客園:建議改用 TWebBrowser 元件

     編輯:程式設計綜合問答

原詢問者嘗試用 TIdHTTP + TIdSSLIOHandlerSocketOpenSSL 模擬 POST 登入博客園,涉及 __VIEWSTATE、__EVENTVALIDATION 等動態隱藏欄位,極易失效。

推薦方案:TWebBrowser (內嵌 IE/Edge WebView2)

  1. 拖放 TWebBrowser 到表單。
  2. 導航至登入頁:WebBrowser1.Navigate('https://passport.cnblogs.com/login.aspx');
  3. DocumentComplete 事件中注入腳本或直接填寫表單:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
  Doc: IHTMLDocument2;
  InputUser, InputPwd, BtnLogin: IHTMLElement;
begin
  Doc := WebBrowser1.Document as IHTMLDocument2;
  InputUser := Doc.getElementById('input1') as IHTMLElement;
  InputPwd  := Doc.getElementById('input2') as IHTMLElement;
  BtnLogin  := Doc.getElementById('btnLogin') as IHTMLElement;
  if Assigned(InputUser) and Assigned(InputPwd) and Assigned(BtnLogin) then
  begin
    (InputUser as IHTMLInputElement).value := '你的用戶名';
    (InputPwd as IHTMLInputElement).value  := '你的密碼';
    (BtnLogin as IHTMLInputElement).click;
  end;
end;

優點

  • 自動處理 Cookie、重導向、JavaScript 渲染、動態 Token。
  • 無需手動解析 __VIEWSTATE 等隱藏欄位。
  • 可視化除錯,所見即所得。

現代替代:Edge WebView2 (Chromium 核心)

Delphi 11+ 支援 TEdgeBrowser,效能更好、相容性更強,建議新專案採用。

模擬登入複雜站點,**瀏覽器元件**遠比手工 HTTP 請求可靠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved