Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $website = 'http://www.cnyes.com/usastock/idxgroup.aspx?ind=0533';
- $page = $_REQUEST['page'] || '1';
- // 以下是分析無參數時的頁面
- // 取得驗證用的兩個重要資訊並且解析出資料部分的內容
- // innerHTML函式來自 : http://kuttler.eu/post/php-innerhtml/
- /*
- $c2 = curl_init();
- curl_setopt($c2, CURLOPT_URL, $website);
- curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
- $DOM = new DOMDocument;
- $DOM->loadHTML(curl_exec($c2));
- curl_close($c2);
- function innerHTML( $contentdiv ) {
- $r = '';
- $elements = $contentdiv->childNodes;
- foreach( $elements as $element ) {
- if ( $element->nodeType == XML_TEXT_NODE ) $r .= $element->nodeValue;
- elseif ( $element->nodeType == XML_COMMENT_NODE ) $r .= '';
- else {
- $r .= '<';
- $r .= $element->nodeName;
- if ( $element->hasAttributes() ) {
- $attributes = $element->attributes;
- foreach ( $attributes as $attribute ) $r .= " {$attribute->nodeName}='{$attribute->nodeValue}'" ;
- }
- $r .= '>';
- $r .= innerHTML( $element );
- $r .= "</{$element->nodeName}>";
- }
- }
- return $r;
- }
- $items = $DOM->getElementsByTagName('input');
- for ($i = 0; $i < $items->length; $i++) {
- $item = $items->item($i);
- if ($item->getAttribute('name') == '__VIEWSTATE') echo $item->getAttribute('value') . "<br/>";
- if ($item->getAttribute('name') == '__EVENTVALIDATION') echo $item->getAttribute('value') . "<br/>";
- }
- echo innerHTML($DOM->getElementById('UpdatePanel1')). '<br>';
- */
- $c2 = curl_init();
- curl_setopt($c2, CURLOPT_URL, $website);
- curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($c2, CURLOPT_POST, 1);
- curl_setopt($c2, CURLOPT_HTTPHEADER, array('X-MicrosoftAjax: Delta=true', // to get delta
- // !!!important!!! 必須要是有效的瀏覽器 User Agent
- 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0',
- ));
- $post_dat = array(
- // !!!important!!! 這部分算是驗證吧
- /*
- __VIEWSTATE => 這包含了目前瀏覽頁面的資訊 類似哪一頁啦 還有一堆不確定的資料
- __EVENTVALIDATION => 恩... 名稱很明顯的是驗證XD 這好像只跟上面那字串有關 估計是HASH之類的吧
- 整體來說 這兩個值保持原樣應該就沒啥問題了吧XDD
- 下面這組是第一頁時的資料
- */
- '__VIEWSTATE' => '/wEPDwULLTIwNDE5MzI3NDcPFgYeB25vd3BhZ2UFATEeCXRvdGFscGFnZQIJHgNpbmQFBDA1MzMWAgIDD2QWBgIHDxYCHgRUZXh0BQ/mjqLli5jlkoznlJ/nlKJkAgkPFgIfAwUKMjAxMy0wOS0wNmQCCw9kFgJmD2QWAgIDD2QWBgIDDw8WAh4HVmlzaWJsZWhkZAIFDw8WAh8EaGRkAgcPEGQQFQkBMQEyATMBNAE1ATYBNwE4ATkVCQExATIBMwE0ATUBNgE3ATgBORQrAwlnZ2dnZ2dnZ2cWAWZkZNi3zKx/0M9XLLviIj62PCVrOkau',
- '__EVENTVALIDATION' => '/wEWDQLPuN8UAsTM9IsOAsXM9IsOAsbM9IsOAsfM9IsOAsDM9IsOAsHM9IsOAsLM9IsOAtPM9IsOAtzM9IsOAubh4r8HAq3nmqkHAtb64vgHprfKSkcA7V+UyDifxMN0b5JTfV8=',
- //'PageSeprater1$DDLPage' => '2' // 指定頁
- //'PageSeprater1$LBPre' => 'AnyValueXD' // '上一頁'
- //'PageSeprater1$LBnext' => 'AnyValueXD' // '下一頁'
- 'PageSeprater1$DDLPage' => $page
- );
- // 第一頁和第一頁基本上不會有啥資料差XD 所以用別頁的資料來造成差異www
- if ($page == '1') {
- // 下面這組是第二頁時的資料
- $post_dat['__VIEWSTATE'] = '/wEPDwULLTIwNDE5MzI3NDcPFgYeB25vd3BhZ2UFATIeCXRvdGFscGFnZQIJHgNpbmQFBDA1MzMWAgIDD2QWBgIHDxYCHgRUZXh0BQ/mjqLli5jlkoznlJ/nlKJkAgkPFgIfAwUKMjAxMy0wOS0wNmQCCw9kFgJmD2QWAgIDD2QWBgIDDw8WAh4HVmlzaWJsZWdkZAIFDw8WAh8EZ2RkAgcPEGQQFQkBMQEyATMBNAE1ATYBNwE4ATkVCQExATIBMwE0ATUBNgE3ATgBORQrAwlnZ2dnZ2dnZ2cWAQIBZGTwR97EG0/VJ6hHp5Nc4bVLtna9SA==';
- $post_dat['__EVENTVALIDATION'] = '/wEWEAKj1eTZCgL39tPkBgKfze+9AgLLo97lAgLEzPSLDgLFzPSLDgLGzPSLDgLHzPSLDgLAzPSLDgLBzPSLDgLCzPSLDgLTzPSLDgLczPSLDgLm4eK/BwKt55qpBwLW+uL4B9UynTe2UkUNmJhb1c11IX27bmQI';
- }
- curl_setopt($c2, CURLOPT_POSTFIELDS, http_build_query($post_dat));
- $cont_str = curl_exec($c2);
- curl_close($c2);
- // 回傳值以 | 這個符號分界 其中第四個值為有差異的網頁內容(中間頁面的內容)
- $cont_ary = explode('|', $cont_str);
- echo $cont_ary[3];
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement