抓取Orkut上的資料,GET跟POST的差別

首先,就我自己來看,我覺得高階的Server Language的地方應該不用分辨GET跟POST,因為開發者只要可以取得KeyValue配對就好,想不到有甚麼理由要分辨GET或是POST的。在ASP.Net中,雖然有分成Request.QueryString跟Request.Form,但其實用Request.QueryString就可以了,這也只是下層一個舉手之勞而已,如果是自己寫CGI,我同意,程式必須要去判斷是哪一種方式,可是在有多一層引擎的情況下,我覺得GET跟POST是沒有差異的。不知道PHP是不是也是這樣?

廢話說完了,這次應工作需求必須去抓取Orkut上的Profile,所以我們必須透過程式去google認證。流程大概就是

  1. google的綜合認證網頁(https://www.google.com/accounts/LoginAuth),取得cookie
  2. orkut(http://www.orkut.com/),會取得一個要轉址的html
  3. 到上面的html(google認證中心)去取得orkut要用的token

我覺得流程有點像Kerberos (看門犬)的認證方式,問題是,我們跑上面的三個網頁竟然要30秒左右,之前我建議我同事用GET比較好寫,所以用GET就行了,後來因為找不到問題,主管說原本是POST,就改回POST試試,沒想到竟然變快了,沒道理啊,就SERVER Side而言,怎麼可能判斷說是GET就多花十秒鐘。

原來兇手是httpclient如果是使用GET的話,會自動去parse傳回來的html,如果他發現需要redirect的話,就會再發出一個request,而經過驗證,中途會多轉到一個不必要的https網頁認證,因為TrustManager的緣故,所以多花了十秒,科科,總算還GET一個清白了~

This entry was posted in 電腦和網際網路. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s