作者 主題: 連續發出兩個以上的GET有不同嗎?  (閱讀 9656 次)

0 會員 與 1 訪客 正在閱讀本文。

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 於: 2007-05-08 22:27 »
延續"如何回應伺服器要求輸入帳號密碼"的問題

現在遇到的情況是在分析發上去的封包時有連續2個以上的GET很像用修改的函數沒辦法處理這種狀況= =?

請問這和發出一個GET的要求頁面命令有不同嗎???

謝謝,感恩^^!
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

elleryq

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
連續發出兩個以上的GET有不同嗎?
« 回覆 #1 於: 2007-05-09 08:29 »
有看過那個討論串了,curl 應該可以設 agent 吧~
你不妨把 user agent 設為 ie 的,或許得到的東西又不一樣。
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #2 於: 2007-05-09 15:15 »
再跑到用修改函數的地方時

他直接丟出一個錯誤訊息

The source error!!

是server的還是該函數不接受參數(參數錯誤)

另外elleryq大的方法,小弟可能要再試試
回到之前照抄封包傳回去

curl還在摸索中,昨天找到一個站裡面有一些資料不錯

原本是簡體字的,小弟把他翻成繁體字版後整理出來的
代碼: [選擇]

bool curl_setopt (int ch, string option, mixed value)

curl_setopt()函數將為一個CURL會話設置選項。
option參數是你想要的設置,value是這個選項給定的值。

下列選項的值將被作為長整形使用(在option參數中指定): 

*CURLOPT_INFILESIZE:當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。

*CURLOPT_VERBOSE:如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。

*CURLOPT_HEADER:如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。

*CURLOPT_NOPROGRESS:如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。
 注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。

*CURLOPT_NOBODY:如果你不想在輸出中包含body部分,設置這個選項為一個非零值。

*CURLOPT_FAILONERROR:如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,
 設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。

*CURLOPT_UPLOAD:如果你想讓PHP為上傳做準備,設置這個選項為一個非零值。

*CURLOPT_POST:如果你想PHP去做一個正規的HTTPPOST,設置這個選項為一個非零值。
 這個POST是普通的application/x-www-from-urlencoded類型,多數被HTML表單使用。

*CURLOPT_FTPLISTONLY:設置這個選項為非零值,PHP將列出FTP的目錄名列表。

*CURLOPT_FTPAPPEND:設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。

*CURLOPT_NETRC:設置這個選項為一個非零值,PHP將在你的~./netrc文件中查找你要建立連接的遠程站點的用戶名及密碼。

*CURLOPT_FOLLOWLOCATION:設置這個選項為一個非零值(象“Location:“)的頭,
 服務器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如“Location:“的頭)。

*CURLOPT_PUT:設置這個選項為一個非零值去用HTTP上傳一個文件。
 要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項.

*CURLOPT_MUTE:設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。

*CURLOPT_TIMEOUT:設置一個長整形數,作為最大延續多少秒。

*CURLOPT_LOW_SPEED_LIMIT:設置一個長整形數,控制傳送多少字節。

*CURLOPT_LOW_SPEED_TIME:設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的字節數。

*CURLOPT_RESUME_FROM:傳遞一個包含字節偏移地址的長整形參數,(你想轉移到的開始表單)。

*CURLOPT_SSLVERSION:傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。

*CURLOPT_TIMECONDITION:傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。
 你可以設置這個參數為TIMECOND_IFMODSINCE或TIMECOND_ISUNMODSINCE。這僅用於HTTP。

*CURLOPT_TIMEVALUE:傳遞一個從1970-1-1開始到現在的秒數。
 這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。



============================================================================================================== 
下列選項的值將被作為字符串: 

*CURLOPT_URL:這是你想用PHP取回的URL地址。
 你也可以在用curl_init()函數初始化時設置這個選項。

*CURLOPT_USERPWD:傳遞一個形如[username]:[password]風格的字符串,作用PHP去連接。

*CURLOPT_PROXYUSERPWD:傳遞一個形如[username]:[password]格式的字符串去連接HTTP代理。

*CURLOPT_RANGE:傳遞一個你想指定的範圍。它應該是”X-Y”格式,X或Y是被除外的。
 HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。

*CURLOPT_POSTFIELDS:傳遞一個作為HTTP“POST”操作的所有數據的字符串。

*CURLOPT_REFERER:在HTTP請求中包含一個”referer”頭的字符串。

*CURLOPT_USERAGENT:在HTTP請求中包含一個”user-agent”頭的字符串。

*CURLOPT_FTPPORT:傳遞一個包含被ftp“POST”指令使用的IP地址。
 這個POST指令告訴遠程服務器去連接我們指定的IP地址。
 這個字符串可以是一個IP地址,一個主機名,一個网絡界面名(在UNIX下),或是‘-’(使用系統默認IP地址)。

*CURLOPT_COOKIE:傳遞一個包含HTTPcookie的頭連接。

*CURLOPT_SSLCERT:傳遞一個包含PEM格式證書的字符串。

*CURLOPT_SSLCERTPASSWD:傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。

*CURLOPT_COOKIEFILE:傳遞一個包含cookie數據的文件的名字的字符串。
 這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。

*CURLOPT_CUSTOMREQUEST:當進行HTTP請求時,傳遞一個字符被GET或HEAD使用。
 為進行DELETE或其它操作是有益的,
 更 PassastringtobeusedinsteadofGETorHEADwhendoinganHTTPrequest.Thisisusefulfordoingoranother,moreobscure,
 HTTPrequest.



注意:在確認你的服務器支持命令先不要去這樣做。

下列的選項要求一個文件描述(通過使用fopen()函數獲得):
 
*CURLOPT_FILE:這個文件將是你放置傳送的輸出文件,默認是STDOUT.

*CURLOPT_INFILE:這個文件是你傳送過來的輸入文件。

*CURLOPT_WRITEHEADER:這個文件寫有你輸出的頭部分。

*CURLOPT_STDERR:這個文件寫有錯誤而不是stderr。


用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了:)

例子:
$cookie_jar = tempnam('./tmp','cookie');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://******');
curl_setopt($ch, CURLOPT_POST, 1);

$request = 'email_address=&password=&action=';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

//把返回來的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);

//設定返回的數據是否自動顯示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//設定是否顯示頭信息
curl_setopt($ch, CURLOPT_HEADER, false);

//設定是否輸出頁面內容
curl_setopt($ch, CURLOPT_NOBODY, false);

curl_exec($ch);

curl_close($ch);


//get data after login
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://*****');
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);

$orders = curl_exec($ch2);
echo '<pre>';
echo strip_tags($orders);
echo '</pre>';
curl_close($ch2);

實踐證明很穩定:)

參考資料:
http://www.phpchina.com/5173/viewspace_4238.html
http://www.phpchina.com/1099/viewspace_2092.html
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
連續發出兩個以上的GET有不同嗎?
« 回覆 #3 於: 2007-05-09 16:58 »
建議您要不要實際去了解一下HTTP 的 protocal
用猜的可能會繞一大圈最後還是不懂到底為什麼
以前我也很喜歡做這種事,不過後來漸漸學乖了,有標準的RFC可以看
搞清楚他送出來的東西到底是什麼,再去做出對應的response

一般來說你送出一個POST的資料給帳號密碼認證的網頁
通過密碼認證後,Server端為了辨識這個通過驗證的session,有很多種作法,
他可能傳回一個cookie的header,有可能傳回一個session header
直到你"離開"(關閉Browser)這個網站之前,所有的POST以及GET動作都得加上Session header

此外當通過密碼認證後,Server端通常會將client導向另一個頁面
而這個"重新導向"的動作也有很多種作法,
可以透過HTTP Header,Javascript,html meta
當Server端送出一個"重新導向"的訊息時,Client端就得乖乖的照個這個訊息
重新發出GET去取得導向後的頁面資料

還是先看一下封包的"內容",看他的Header究竟要你做什麼。
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #4 於: 2007-05-09 18:31 »
引述: "ricky"

此外當通過密碼認證後,Server端通常會將client導向另一個頁面
而這個"重新導向"的動作也有很多種作法,
可以透過HTTP Header,Javascript,html meta
當Server端送出一個"重新導向"的訊息時,Client端就得乖乖的照個這個訊息
重新發出GET去取得導向後的頁面資料


阿...有有有

首先我送上帳號密碼後他丟下來一個封包
代碼: [選擇]

HTTP/1.1 200 OK
Date: Wed, 09 May 2007 06:23:47 GMT
Server: Apache
Content-Length: 158
Connection: close
Content-Type: text/html

<html><script>window.location.href='http://'+document.domain+'/app/member/chk_rule.php?uid=31178691827862&mid=20474&langx=zh-tw&us_status=Y';</script></html>#

然後我接到一個頁面

發出請求後他又丟一個下來
代碼: [選擇]

HTTP/1.1 200 OK
Date: Wed, 09 May 2007 06:23:53 GMT
Server: Apache
Content-Length: 1018
Connection: close
Content-Type: text/html

<html>
<head>
<title>Welcome Quick</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<script src=/js/top_func.js></script>
<script language="JavaScript">
window.onload=init;
function init(){
var arr_game=new Array();
arr_game=top.user_game.split(",");
if(arr_game[0]=="") arr_game[0]="FT"
headerFrame.location.href='header_mem.php?'+top.base_url+"&session="+arr_game[0];
//headerFrame.location.href='BK_header.php?'+top.base_url;
//headerFrame.location.href='header_mem.php?'+top.base_url;
//order.location.href="order_BK/BK_order_pre.php?"+top.base_url+"&session=BK";
}
</script>

</head>
<frameset rows="101,*" frameborder="NO" border="0" framespacing="0">
<frame name="headerFrame" id="headerFrame" noresize scrolling="NO" >
<frameset cols="240,*" frameborder="NO" border="0" framespacing="0">
<frame name="order" scrolling="NO" noresize >
<frame name="browse" noresize >
</frameset>
</frameset>
<noframes>

<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>

再接到這一個以後
代碼: [選擇]

HTTP/1.1 200 OK

Date: Wed, 09 May 2007 06:23:53 GMT

Server: Apache

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html



1f63

<html>
<head>
<title>Welcome</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<link rel="stylesheet" href="/style/member/mem_header.css" type="text/css">
<SCRIPT language="javascript1.2">
var pic_mem_body="/images/member/header_ba_GAME.gif";
var pic_sub_pic="/images/member/header_gic_ph11_GAME.gif";
</SCRIPT>
<script>
top.session='BK';
</script>
<script>
if(top.uid=="" || self==top || top.document.domain!=document.domain){ top.location="http://"+document.domain;}

window.onload=init;

function init(){
show_marquee(0);
hrefgame_m(top.session,"R");
}

function hrefgame_m(topsession,wtype){
/* //if(topsession=="TN" || topsession=="GF"){
if(topsession=="TN"){
if( (""+top.location).indexOf("16888") <0  && (""+top.location).indexOf("16999") < 0 ){ // User Domain - text machine
 parent.browse.location.href='./coming_soon.php?'+top.base_url;
 return true;
}
}
*/
try{
document.getElementById('real_msg').innerHTML="";
}catch(E){}
if(wtype=="")wtype="R";
gtype=topsession;
lower_gtype= topsession.toLowerCase();
if(topsession=="FU") gtype="FT";
if(topsession=="BU") gtype="BK";
if(topsession=="BE") gtype="BS";
if(topsession=="TU") gtype="TN";
top.session=topsession;
top.LegGame='ALL';
top.pages=1;
if (top.show_switch==null)top.show_switch="";
sub_txt.innerHTML= eval('sel_'+gtype+'.innerHTML');
parent.order.location.href=top.location+'app/member/order_'+gtype+'/'+gtype+'_order_pre.php?'+top.base_url+'&session='+topsession+'&show_switch='+top.show_switch;
parent.browse.location.href=top.location+'app/member/browse_'+topsession+'/loadgame_'+wtype+'.php?'+top.base_url;
eval("document.getElementById('mem_body').background='"+pic_mem_body.replace("GAME",lower_gtype)+"'");
eval("document.getElementById('sub_pic').background ='"+pic_sub_pic.replace("GAME",lower_gtype)+"'");

//chg_images(lower_gtype); //Change about images;
try{
show_marquee(0);
}catch(E){}
}

//function chg_images(gameType){
// gameType=gameType.toLowerCase();
// alert(""+pic_mem_length);
// if(""+pic_mem_length != "undefined"){
// // var pic_mem_length=2;

// // var pic_mem1="/images/member/header_ba_GAME.gif";

// // var pic_mem2="/images/member/header_gic_ph11_GAME.gif";
// aelrt(mem_imag_length.length);
// return "";

//// for(oo=1;oo=<mem_imag_length*1;oo++) {
//// eval("document.getElementById('mem_imag"+oo+"').background='"+{"mem_imag_id"+oo}.replace("GAME",gameType)+"'");
//// }
// }else{
// eval("document.getElementById('mem_body').background='"+pic_mem_body.replace("GAME",gameType)+"'");
// eval("document.getElementById('sub_pic').background ='"+pic_sub_pic.replace("GAME",gameType)+"'");
// }
//}

function hrefs(urls,early){
top.pages=1;
if ((early=="") || (""+early=="undefined"))
tourls="browse_"+top.session+urls;
else
tourls="browse_"+early+urls;
parent.browse.location.href=tourls;
}

function hrefs_other(urls){
top.pages=1;
parent.browse.location.href=urls;
}

function show_marquee(update){
obj_msg = document.getElementById('real_msg');
if (obj_msg.innerHTML=="" )
obj_msg.innerHTML="<marquee id=maq scrolldelay=200 style='cursor:hand'><span id=mar_msg></span></marquee>";
if (update==1 || mar_msg.innerHTML==""){
var oos="";
for (oo=0;oo<100;oo++) oos+="&nbsp;";
if ((""+top.scroll_set1)!="") top.scroll_set1+=oos;
if ((""+top.scroll_set2)!="") top.scroll_set2+=oos;
//if ((""+top.scroll_set3)!="") top.scroll_set3+=oos;
if (top.scroll_set1!="" || top.scroll_set2!="" || top.scroll_set3!="")
//mar_msg.innerHTML="<font style='cursor:hand' onclick=javascript:window.location='./history_marquee.php?langx="+top.langx+"&uid="+top.uid+"'>"+top.scroll_set1+top.scroll_set2+top.scroll_set3+"</font>";
mar_msg.innerHTML="<font style='cursor:hand' onclick=javascript:hrefs_other('./history_marquee.php?langx="+top.langx+"&uid="+top.uid+"')>"+top.scroll_set1+top.scroll_set2+top.scroll_set3+"</font>";
}
}
</script>
</head>
<body id="mem_body"  bgcolor="FFFFFF" text="000000" leftmargin="0" topmargin="0" background="/images/member/header_ba_ft.gif" oncontextmenu="window.event.returnValue=false" onselectstart="event.returnValue=false">
<table width="841" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="182" rowspan="2" valign="top"><img src="/images/member/header_ph11.jpg" width="182" height="56"></td>
    <td width="71" rowspan="2"><img src="/images/member/header_ph12.jpg" width="71" height="56"></td>
    <td valign="top"><table border="0" cellpadding="0" cellspacing="0">
  <tr>
<td>
<a href="http://mlb.mlb.com/nasapp/mlb/index.jsp" target="_blank"><img src="../../images/member/head_link01.gif" width="86" height="29" border="0"></a></td>
<td>
<a href="http://msn.foxsports.com/mlb/scores" target="_blank"><img src="../../images/member/head_link02.gif" width="83" height="29" border="0"></a></td>
<td>
<a href="http://sports.yahoo.com/mlb/gamechannel" target="_blank"><img src="../../images/member/head_link03.jpg" width="83" height="29" border="0"></a></td>
<td>
<a href="http://www.bb899.com" target="_blank"><img src="../../images/member/head_link04.gif" width="83" height="29" border="0"></a></td>
<td>
<a href="http://baseball.yahoo.co.jp/npb" target="_blank"><img src="../../images/member/head_link05.gif" width="83" height="29" border="0"></a></td>
<td>
  <a href="http://www.az-sportsnet.com/mlb" target="_blank"><img src="../../images/member/head_link06.gif" width="85" height="29" border="0"></a></td>
  <!--td>
  <a href="http://yes900.com" target="_blank"><img src="../../images/member/head_link07.gif" width="85" height="29" border="0"></a></td-->
   </tr>
</table></td>
  </tr>
  <tr>
    <td valign="top"><table width="588" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:0px">
        <tr>
          <td width="37"><img src="/images/member/header_ad_1.gif" width="37" height="27"></td>
          <td id="real_msg" class="b_ad"></td>
          <td width="30"><a href="javascript:void(0);" onClick="javascript:hrefs_other('./history_marquee.php?langx='+top.langx+'&uid='+top.uid)"><img src="/images/member/header_ad_3.gif" width="30" height="27" border="0"></a></td>
        </tr>
    </table></td>
  </tr>
</table>
<table width="850" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="137"><img src="/images/member/header_ph21.jpg" width="137" height="25"></td>
    <td class="mic" nowrap>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefs_other('account/mem_data.php?'+top.base_url);"  >會員資料</a>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefs_other('history/h_first.php?'+top.base_url);"   >帳戶歷史</a>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefs_other('today/today_wagers.php?'+top.base_url);">交易狀況</a>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('FT','R');">足球</a>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('BK','R');">籃球</a>
    <a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('BS','R');">棒球</a>
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('TN','R');">網球</a>
<!--a href="javascript:void(0);" class="mic_dot" onclick="javascript:hrefgame_m('VB','R');">排球</a-->
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('GF','R2');">高爾夫</a>
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('NF','R');">美式足球</a>
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:hrefgame_m('FS','R');">冠軍</a>
<!--a href="javascript:void(0);" class="mic_dot" onclick="javascript:hrefs('../../browse_FS/loadgame_R.php?'+top.base_url);">冠軍</a-->
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:window.open('rule/rule_game.php?'+top.base_url+'&gtype=BK','','width=797,height=587,scrollbars=yes, resizable=yes,status=yes');">規則說明</a>
<a href="javascript:void(0);" class="mic_dot" onClick="javascript:href=

2008

'logout.php?'+top.base_url+'&mid='+top.mid">回首頁</a> </td>
  </tr>
</table>

<table width="950" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <!--td width="80" align="right" class="color"><img id="sub_pic" src="/images/member/header_gic_ph11_ft.gif" width="29" height="20"></td-->
     <td width="80" align="right" class="color"><table id="sub_pic" width="36" height="20"><tr><td>&nbsp;</td></tr></table></td>
    <td class="gic">
<span id="sub_txt"></span>
    </td>
  </tr>
</table>

<div id="sel_FT" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);"  >單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_HR.php?'+top.base_url);" >上半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_M.php?'+top.base_url);"  >獨贏</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_RB.php?'+top.base_url,'FT');" >滾球</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_PD.php?'+top.base_url);" >波膽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_HPD.php?'+top.base_url);" >上半波膽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_T.php?'+top.base_url);"  >入球數</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_F.php?'+top.base_url);"  >半全場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P1.php?'+top.base_url);" >標準過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);" >讓球過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);" >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=FT','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=FT');" >比賽結果</a>
</div>

<div id="sel_BK" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_ALL.php?'+top.base_url);" >單式全部</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);">單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R11.php?'+top.base_url,'BK');">單節</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_RB.php?'+top.base_url,'BK');" >滾球</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R1st.php?'+top.base_url);" >上半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R2nd.php?'+top.base_url,'BK');" >下半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);"  >讓分過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);"  >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=BK','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=BK');">比賽結果</a>
</div>

<div id="sel_BS" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);" >單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_EO.php?'+top.base_url);" >單雙</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R1st.php?'+top.base_url);" >上半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_PD.php?'+top.base_url);" >波膽</a>&nbsp;&nbsp;
    <a href="javascript:void(0);" onClick="hrefs('/loadgame_T.php?'+top.base_url);" >總得分</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_RB.php?'+top.base_url,'BS');" >滾球</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P1.php?'+top.base_url);" >獨贏互碰</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);" >讓分過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);" >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=BS','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=BS');">比賽結果</a>
</div>

<div id="sel_TN" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);" >單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_PD.php?'+top.base_url);" >波膽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);" >讓盤過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);" >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=TN','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=TN');">比賽結果</a>
</div>
<div id="sel_VB" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);" >單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_PD.php?'+top.base_url);" >波膽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);" >讓局過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);" >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=VB','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=VB');">比賽結果</a>
</div>
<div id="sel_GF" style="display: none">
<!--
<a href="javascript:void(0);" onclick="hrefs('/loadgame_R.php?'+top.base_url);" >2/3人</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onclick="hrefs('/loadgame_R56.php?'+top.base_url);" >小組賽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onclick="hrefs('/loadgame_R.php?'+top.base_url);" >單式</a>&nbsp;&nbsp;
-->
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R2.php?'+top.base_url);" >2人</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R3.php?'+top.base_url);" >3人</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R56.php?'+top.base_url);" >小組賽</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=GF','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/GF_result.php?'+top.base_url+'&game_type=GF');">比賽結果</a>
</div>

<div id="sel_NF" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);">單式</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R11.php?'+top.base_url,'NF');">單節</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R1st.php?'+top.base_url);" >上半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R2nd.php?'+top.base_url,'NF');" >下半場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_T.php?'+top.base_url);"  >入球數</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_F.php?'+top.base_url);"  >半全場</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P1.php?'+top.base_url);" >標準過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P2.php?'+top.base_url);"  >讓分過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_P3.php?'+top.base_url);"  >複合過關</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url+'&FStype=NF','FS');" >冠軍</a>&nbsp;&nbsp;
<a href="javascript:void(0);" onClick="hrefs_other('result/result.php?'+top.base_url+'&game_type=NF');">比賽結果</a>
</div>

<div id="sel_FS" style="display: none">
<a href="javascript:void(0);" onClick="hrefs('/loadgame_R.php?'+top.base_url);" >冠軍</a>&nbsp;&nbsp;
<!--a href="javascript:void(0);">冠軍</a>&nbsp;&nbsp; -->
<a href="javascript:void(0);" onC

6f

lick="hrefs_other('result/FS_result.php?'+top.base_url+'&game_type=FS');">比賽結果</a>
</div>

</body>
</html>

0


再發出請求就給我The source error!!了

.................
.................
.................

非常謝謝...感恩^^!
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
連續發出兩個以上的GET有不同嗎?
« 回覆 #5 於: 2007-05-10 09:23 »
使用javascript要追蹤的話就很麻煩嘍
畢竟你不是 javascript 的直譯器
每次GET該送出什麼參數也不一定
如果對方網站存心要擋掉這類用程式登入進來的User
除了用Javascript (很少會有程式有具備Javascript直譯能力,工程太浩大了)過濾
加上對Referer來源網頁的過濾(得在GET的Header中加上你是從哪一個網頁連過來的)
如果沒辦法通過這兩個,對方可能就把你視為"非正當管道"連進來的User,就吐出一個Source Error 把你ban了
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #6 於: 2007-05-10 15:41 »
在分析時看到這兩個
代碼: [選擇]

.....
.....
parent.browse.location.href='./coming_soon.php?'+top.base_url;
.....
.....
<td width="30"><a href="javascript:void(0);" onClick="javascript:hrefs_other('./history_marquee.php?langx='+top.langx+'&uid='+top.uid)">

照著格式發出去,有取到兩個頁面(不過不是想要的,是兩個不重要的頁面)

然後想說應該是我發出的格式錯了吧??因為有看到這幾行覺得滿眼熟的
代碼: [選擇]

parent.order.location.href=top.location+'app/member/order_'+gtype+'/'+gtype+'_order_pre.php?'+top.base_url+'&session='+topsession+'&show_switch='+top.show_switch;
   parent.browse.location.href=top.location+'app/member/browse_'+topsession+'/loadgame_'+wtype+'.php?'+top.base_url;
   eval("document.getElementById('mem_body').background='"+pic_mem_body.replace("GAME",lower_gtype)+"'");
   eval("document.getElementById('sub_pic').background ='"+pic_sub_pic.replace("GAME",lower_gtype)+"'");

這在Ethereal裡面看的時候有兩個相同格式的GET封包被發出去......

最不瞭的是上面那一個GET的最後面有一個參數是這樣的----->&show_switch=

是一個空的東東,想說是不是之前那些附加在後面的東西???
類似這樣
代碼: [選擇]

strcat(str,"POST /app/member/chk_login.php HTTP/1.1\r\n");
strcat(str,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xshockwave-fla
sh, */*\r\n");
strcat(str,"Referer: http://525168.com/app/member/index.php\r\n");
strcat(str,"Accept-Language: zh-tw\r\n");
strcat(str,"Content-Type: application/x-www-form-urlencoded\r\n");
strcat(str,"Accept-Encoding: gzip, deflate\r\n");
strcat(str,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; windows NT 5.1; SV1; FDM)\r\n");
strcat(str,"Host: 525168.com\r\n");
strcat(str,"Content-Length: 83\r\n");
strcat(str,"Connection: keep-Alive\r\n");
strcat(str,"Cache-Contral: no-cache\r\n");
strcat(str,"\r\n");
strcat(str,"uid=001&username=XXXXXXX&passwd=8888888&langx=zh-tw&end=&submit2=%E7%A2%BA%E5%AE%9A\n")




========================================
昨天晚上有去Ethereal官方網站下載了RH9版本安裝上去了,今天來看看從程式出去的東西有哪些不一樣吧^^!

非常謝謝大家喔^^!謝謝
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #7 於: 2007-05-10 16:45 »
引述: "ricky"
使用javascript要追蹤的話就很麻煩嘍
畢竟你不是 javascript 的直譯器
每次GET該送出什麼參數也不一定
如果對方網站存心要擋掉這類用程式登入進來的User
除了用Javascript (很少會有程式有具備Javascript直譯能力,工程太浩大了)過濾
加上對Referer來源網頁的過濾(得在GET的Header中加上你是從哪一個網頁連過來的)
如果沒辦法通過這兩個,對方可能就把你視為"非正當管道"連進來的User,就吐出一個Source Error 把你ban了


再請教一下
代碼: [選擇]

除了用Javascript (很少會有程式有具備Javascript直譯能力,工程太浩大了)過濾

是指他在程式內將一些宣告字串的合併嗎(我剛剛有把他的一些top.xxxx的字串宣告存下來)

也就是說依照他合併字串的規則將這些字串(參數,變數)併起來就等於過這一關了是不是???


代碼: [選擇]

加上對Referer來源網頁的過濾(得在GET的Header中加上你是從哪一個網頁連過來的)

這個就有點不解了?_?

是不是在GET ........下面有個
Accept:.....
Referer: http://xxxxx.com/app/member/index_header.php\r\n
.....
.....

這樣的東西?_?
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #8 於: 2007-05-10 18:45 »
看來很像是這個問題

剛剛用在Linux上的機器抓下來的封包發現,我傳上去的只有
代碼: [選擇]

GET /app/.............. HTTP/1.1\r\n
Host:......\r\n
Pragme:........\r\n
Accept:............\r\n

但在xp機器上用正常的瀏覽器連結的封包,多了一堆東西
代碼: [選擇]

GET /app/.............. HTTP/1.1\r\n
Accept:............\r\n
Referer:.....\r\n
Accept-Language:.....\r\n
Accept-Encoding:.....\r\n
User-Agent:.....\r\n
Host:.....\r\n
Connection:.....\r\n


呼~~~給他騙看看能不能過關^^!
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
連續發出兩個以上的GET有不同嗎?
« 回覆 #9 於: 2007-05-10 20:10 »
阿哈......騙到了

用之前修改的那個curl範例curl_examp_005(char urlstr,char *dafph);

將那些不足的部分給他放在char *dafph那個字串參數裡面,curl函數會將該字串

加到理面....就騙過去了^^!

唉呦...我的腰...一爹>"<

可是好爽....謝謝大家^^!
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
連續發出兩個以上的GET有不同嗎?
« 回覆 #10 於: 2007-05-11 11:07 »
看來真的是少了Referer
Referer的意義是
例如你現在在的網頁是http://www.google.com/
當你點選一個連結連到Yahoo
這時候瀏覽器就會送出一個
Referer: http://www.google.com/
給Yahoo的Server
這時候Yahoo就知道你是從google的網站那邊轉連過來的
通常這個動作是用來確保你是從"正當管道"連過來,而不是直接連結
不過檢查Referer只能防君子,畢竟Referer還是可以偽造
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/