View difference between Paste ID: N71pA6t4 and za1qcrF4
SHOW: | | - or go back to the newest paste.
1
<?php
2
$website = 'http://www.cnyes.com/usastock/idxgroup.aspx?ind=0533';
3
4-
$page = $_REQUEST['page'] || '1';
4+
$page = $_REQUEST['page'] ? $_REQUEST['page'] : '1';
5
6
// 以下是分析無參數時的頁面
7
// 取得驗證用的兩個重要資訊並且解析出資料部分的內容
8
// innerHTML函式來自 : http://kuttler.eu/post/php-innerhtml/
9
/*
10
$c2 = curl_init();
11
curl_setopt($c2, CURLOPT_URL, $website);
12
curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
13
$DOM = new DOMDocument;
14
$DOM->loadHTML(curl_exec($c2));
15
curl_close($c2);
16
17
function innerHTML( $contentdiv ) {
18
	$r = '';
19
	$elements = $contentdiv->childNodes;
20
	foreach( $elements as $element ) {
21
		if ( $element->nodeType == XML_TEXT_NODE ) $r .= $element->nodeValue;
22
		elseif ( $element->nodeType == XML_COMMENT_NODE ) $r .= '';
23
		else {
24
			$r .= '<';
25
			$r .= $element->nodeName;
26
			if ( $element->hasAttributes() ) {
27
				$attributes = $element->attributes;
28
				foreach ( $attributes as $attribute ) $r .= " {$attribute->nodeName}='{$attribute->nodeValue}'" ;
29
			}
30
			$r .= '>';
31
			$r .= innerHTML( $element );
32
			$r .= "</{$element->nodeName}>";
33
		}
34
	}
35
	return $r;
36
}
37
38
$items = $DOM->getElementsByTagName('input');
39
for ($i = 0; $i < $items->length; $i++) {
40
	$item = $items->item($i);
41
	if ($item->getAttribute('name') == '__VIEWSTATE') echo $item->getAttribute('value') . "<br/>";
42
	if ($item->getAttribute('name') == '__EVENTVALIDATION') echo $item->getAttribute('value') . "<br/>";
43
}
44
echo innerHTML($DOM->getElementById('UpdatePanel1')). '<br>';
45
*/
46
47
48
49
50
$c2 = curl_init();
51
curl_setopt($c2, CURLOPT_URL, $website);
52
curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
53
curl_setopt($c2, CURLOPT_POST, 1);
54
curl_setopt($c2, CURLOPT_HTTPHEADER, array('X-MicrosoftAjax: Delta=true', // to get delta
55
                                           
56-
										   // !!!important!!! 必須要是有效的瀏覽器 User Agent
56+
                                           // !!!important!!! 必須要是有效的瀏覽器 User Agent
57-
										   'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0',
57+
                                           'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0',
58-
										   ));
58+
                                           ));
59
$post_dat = array(
60-
                  // !!!important!!! 這部分算是驗證吧
60+
				  // !!!important!!! 這部分算是驗證吧
61
				  /*
62
				  __VIEWSTATE		=> 這包含了目前瀏覽頁面的資訊 類似哪一頁啦 還有一堆不確定的資料
63
				  __EVENTVALIDATION	=> 恩... 名稱很明顯的是驗證XD 這好像只跟上面那字串有關 估計是HASH之類的吧
64
				  整體來說 這兩個值保持原樣應該就沒啥問題了吧XDD
65
				  下面這組是第一頁時的資料
66
				  */
67-
                  '__VIEWSTATE'				=> '/wEPDwULLTIwNDE5MzI3NDcPFgYeB25vd3BhZ2UFATEeCXRvdGFscGFnZQIJHgNpbmQFBDA1MzMWAgIDD2QWBgIHDxYCHgRUZXh0BQ/mjqLli5jlkoznlJ/nlKJkAgkPFgIfAwUKMjAxMy0wOS0wNmQCCw9kFgJmD2QWAgIDD2QWBgIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh8EaGRkAgcPEGQQFQkBMQEyATMBNAE1ATYBNwE4ATkVCQExATIBMwE0ATUBNgE3ATgBORQrAwlnZ2dnZ2dnZ2cWAWZkZNi3zKx/0M9XLLviIj62PCVrOkau',
67+
				  '__VIEWSTATE'				=> '/wEPDwULLTIwNDE5MzI3NDcPFgYeB25vd3BhZ2UFATEeCXRvdGFscGFnZQIJHgNpbmQFBDA1MzMWAgIDD2QWBgIHDxYCHgRUZXh0BQ/mjqLli5jlkoznlJ/nlKJkAgkPFgIfAwUKMjAxMy0wOS0wNmQCCw9kFgJmD2QWAgIDD2QWBgIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh8EaGRkAgcPEGQQFQkBMQEyATMBNAE1ATYBNwE4ATkVCQExATIBMwE0ATUBNgE3ATgBORQrAwlnZ2dnZ2dnZ2cWAWZkZNi3zKx/0M9XLLviIj62PCVrOkau',
68-
                  '__EVENTVALIDATION'		=> '/wEWDQLPuN8UAsTM9IsOAsXM9IsOAsbM9IsOAsfM9IsOAsDM9IsOAsHM9IsOAsLM9IsOAtPM9IsOAtzM9IsOAubh4r8HAq3nmqkHAtb64vgHprfKSkcA7V+UyDifxMN0b5JTfV8=',
68+
				  '__EVENTVALIDATION'		=> '/wEWDQLPuN8UAsTM9IsOAsXM9IsOAsbM9IsOAsfM9IsOAsDM9IsOAsHM9IsOAsLM9IsOAtPM9IsOAtzM9IsOAubh4r8HAq3nmqkHAtb64vgHprfKSkcA7V+UyDifxMN0b5JTfV8=',
69
				  
70
				  
71
				  //'PageSeprater1$DDLPage'	=> '2' // 指定頁
72
				  //'PageSeprater1$LBPre'	=> 'AnyValueXD' // '上一頁'
73
				  //'PageSeprater1$LBnext'	=> 'AnyValueXD' // '下一頁'
74
				  
75
				  'PageSeprater1$DDLPage'	=> $page
76
				  );
77
78
// 第一頁和第一頁基本上不會有啥資料差XD 所以用別頁的資料來造成差異www
79
if ($page == '1') {
80
	// 下面這組是第二頁時的資料
81
	$post_dat['__VIEWSTATE'] = '/wEPDwULLTIwNDE5MzI3NDcPFgYeB25vd3BhZ2UFATIeCXRvdGFscGFnZQIJHgNpbmQFBDA1MzMWAgIDD2QWBgIHDxYCHgRUZXh0BQ/mjqLli5jlkoznlJ/nlKJkAgkPFgIfAwUKMjAxMy0wOS0wNmQCCw9kFgJmD2QWAgIDD2QWBgIDDw8WAh4HVmlzaWJsZWdkZAIFDw8WAh8EZ2RkAgcPEGQQFQkBMQEyATMBNAE1ATYBNwE4ATkVCQExATIBMwE0ATUBNgE3ATgBORQrAwlnZ2dnZ2dnZ2cWAQIBZGTwR97EG0/VJ6hHp5Nc4bVLtna9SA==';
82
	$post_dat['__EVENTVALIDATION'] = '/wEWEAKj1eTZCgL39tPkBgKfze+9AgLLo97lAgLEzPSLDgLFzPSLDgLGzPSLDgLHzPSLDgLAzPSLDgLBzPSLDgLCzPSLDgLTzPSLDgLczPSLDgLm4eK/BwKt55qpBwLW+uL4B9UynTe2UkUNmJhb1c11IX27bmQI';
83
}
84
85
86
curl_setopt($c2, CURLOPT_POSTFIELDS, http_build_query($post_dat));
87
$cont_str = curl_exec($c2);
88
curl_close($c2);
89
90
91
// 回傳值以 | 這個符號分界 其中第四個值為有差異的網頁內容(中間頁面的內容)
92
$cont_ary = explode('|', $cont_str);
93
echo $cont_ary[3];
94
?>