請問在用idhttp.get網頁時,對方要cookie我將怎樣把cookie傳給它?謝謝! |
尚未結案
|
ziluobu
一般會員 發表:3 回覆:3 積分:1 註冊:2004-07-06 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
ziluobu 你好 1.Cookies的取得,一般是經過帳號密碼登入並驗證過後由WebServer產生並隨網頁自動傳到Client端的,而由瀏覽器依設定存放在固定的位置(一般為使用者資料夾下的Cookies目錄)。 2.當有Get及Post的動作時,瀏覽器會自動到該位置檢查是否有目標伺服器產生的Cookies,若有的話(且未過期),則自動隨Get或Post一同傳到目標伺服器。 因此略過第一個產生Cookies的步驟,從第二步來看,Get時如何將Cookies傳給伺服器 1.若有現成的Cookies 且未過期,其實我們也不用額外處理,瀏覽器會自動一起傳過去。
2.若沒有現成的Cookies,就須要在Get或post之前,自己產生並放在正確的位置,
但是要自己產生Cookies,除非你知道該伺服器所產生的Cookies的內容及結構如何,否則就等於駭客的行為了。 3.另一個比較可行的辦法,是由程式代為登入該伺服器,讓該伺服器自動生成Cookies後,在執行Get或Post的動作(一切也都順理成章)。 4.至於由程式代為登錄伺服器,本站之前有人討論過,搜尋一下應該可以找到。 以下連結,參考看看
http://delphi.ktop.com.tw/topic.php?topic_id=18695
http://delphi.ktop.com.tw/topic.php?topic_id=47086
http://delphi.ktop.com.tw/topic.php?topic_id=31987
http://delphi.ktop.com.tw/topic.php?topic_id=48118
|
ziluobu
一般會員 發表:3 回覆:3 積分:1 註冊:2004-07-06 發送簡訊給我 |
引言: ziluobu 你好 1.Cookies的取得,一般是經過帳號密碼登入並驗證過後由WebServer產生並隨網頁自動傳到Client端的,而由瀏覽器依設定存放在固定的位置(一般為使用者資料夾下的Cookies目錄)。 2.當有Get及Post的動作時,瀏覽器會自動到該位置檢查是否有目標伺服器產生的Cookies,若有的話(且未過期),則自動隨Get或Post一同傳到目標伺服器。 因此略過第一個產生Cookies的步驟,從第二步來看,Get時如何將Cookies傳給伺服器 1.若有現成的Cookies 且未過期,其實我們也不用額外處理,瀏覽器會自動一起傳過去。 2.若沒有現成的Cookies,就須要在Get或post之前,自己產生並放在正確的位置, 但是要自己產生Cookies,除非你知道該伺服器所產生的Cookies的內容及結構如何,否則就等於駭客的行為了。 3.另一個比較可行的辦法,是由程式代為登入該伺服器,讓該伺服器自動生成Cookies後,在執行Get或Post的動作(一切也都順理成章)。 4.至於由程式代為登錄伺服器,本站之前有人討論過,搜尋一下應該可以找到。 以下連結,參考看看 http://delphi.ktop.com.tw/topic.php?topic_id=18695 http://delphi.ktop.com.tw/topic.php?topic_id=47086 http://delphi.ktop.com.tw/topic.php?topic_id=31987 http://delphi.ktop.com.tw/topic.php?topic_id=48118首先謝謝Chance36兄為我解答,我是要做個網頁爬蟲程序,所以用WebServer控件十分的不方便。我已經用IDHTTP控件的post正確獲取勒cookie如下並把他保存在IdCookieManager1控件裏如下 procedure TForm2.BitBtn1Click(Sender: TObject); var temp:tstringlist; b:string; begin form1.Memo1.Text:=''; temp:=tstringlist.Create; temp.add('url=http://localhost/bbs/main.asp'); temp.Add('username=ziluobu'); temp.Add('userpass=******); temp.add('xuansave=1'); temp.Add('Submit1= 登录 '); b:=form1.idhttp1.Post('http://localhost/bbs/login.asp',temp); form1.memo1.Text:=b; form2.Hide; end;可是就不知道用idhttp.get時怎樣把保存在IdCookieManager1裏的cookie用上!請前輩指點! |
ziluobu
一般會員 發表:3 回覆:3 積分:1 註冊:2004-07-06 發送簡訊給我 |
这个我题我已经试出来了,可以在idhttp的程序里加一个IdCookieManager控件,用POST方式先到网站上获取cookie然后就能用idhttp.get方式访问有cookie限制的网站了!
procedure TForm2.BitBtn1Click(Sender: TObject);
var
temp:tstringlist;
b:string;
begin
form1.Memo1.Text:='';
temp:=tstringlist.Create;
temp.add('url=http://localhost/bbs/main.asp');
temp.Add('username=ziluobu');
temp.Add('userpass=******);
temp.add('xuansave=1');
temp.Add('Submit1= 登录 ');
b:=form1.idhttp1.Post('http://localhost/bbs/login.asp',temp);
form1.memo1.Text:=b;
form2.Hide;
end; 如果你知道cookie的格式可以直接用add的方法将cookie直接给IdCookieManager赋值!
|
ziluobu
一般會員 發表:3 回覆:3 積分:1 註冊:2004-07-06 發送簡訊給我 |
1、這個問題我已經試齣來勒,可以在idhttp的程序裏加一個idcookiemanager控件,試idhttp的idcookiemanager指嚮idcookiemanager控件,用post方式先到網站上獲取cookie然后就能用idhttp.get方式訪問有COOKIE限製的網站勒! 2、如果妳知道cookie的格式可以直接用add的方法直接將cookie賦值給idcookiemanager,然后直接用idhttp.get獲取頁麵就行勒!
procedure TForm2.BitBtn1Click(Sender: TObject);
var
temp:tstringlist;
b:string;
begin
form1.Memo1.Text:='';
temp:=tstringlist.Create;
temp.add('url=http://localhost/bbs/main.asp');
temp.Add('username=ziluobu');
temp.Add('userpass=******);
temp.add('xuansave=1');
temp.Add('Submit1= 登录 ');
b:=form1.idhttp1.Post('http://localhost/bbs/login.asp',temp);
form1.memo1.Text:=b;
form2.Hide;
end;
|
glascholar
一般會員 發表:0 回覆:1 積分:0 註冊:2005-07-19 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |