[請益] 請問cURL某一網站的問題

看板PHP作者 (炸橋)時間8年前 (2016/03/30 17:26), 8年前編輯推噓1(1012)
留言13則, 5人參與, 最新討論串1/1
小弟想利用curl來抓取某網站的內容 https://www.youtube.com/trendsdashboard#age0=25-34&loc0=twn 使用以下mycurl()的程式碼 , 有抓到東西 抓到的head如下: HTTP/1.1 200 OK Date: Wed, 30 Mar 2016 09:23:41 GMT Server: gwiseguy/2.0 X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube Cache-Control: no-cache Content-Type: text/html; charset=utf-8 Expires: Tue, 27 Apr 1971 19:44:06 EST Strict-Transport-Security: max-age=604800 X-Content-Type-Options: nosniff Accept-Ranges: none Vary: Accept-Encoding Transfer-Encoding: chunked 後來我也有把cookie 送上去 但不知為什麼抓不到原始網頁下方影片的資訊(連結href, 點及次數...等資訊) 想請教大家自己是哪個地方出錯? 或是目標網頁有什麼新技術 造成無法抓取呢? 感謝~~ function mycurl() { //目標網站 $target1="https://www.youtube.com/trendsdashboard#age0=25-34&loc0=twn "; #####(A 1)選項設定: 目標設置 / 起始 / 假冒 $s=curl_init(); curl_setopt($s,CURLOPT_URL,$target1); $user_agent='Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11'; curl_setopt($s, CURLOPT_USERAGENT, $user_agent); #(1)是否發送POST請求 (填表單) //$POST_data1=array('CN'=>"l6",'remember'=>"1",'UserPASSWORD'=>"091",'URL'=>""); //$POST_data2=array('username'=>"markbone2@yahoo.com.tw",'passwd'=>""); //curl_setopt($s,CURLOPT_POST,1); //curl_setopt($s,CURLOPT_POSTFIELDS,$POST_data1); #(2)結果回傳:是否以 文件流/二元碼方式傳回 curl_setopt($s,CURLOPT_RETURNTRANSFER,TRUE); //curl_setopt($s,CURLOPT_BINARYTRANSFER,TRUE); #(3)結果回傳:是否 包含標頭 / 只要BODY curl_setopt($s,CURLOPT_HEADER,TRUE); #(4)COOKIE設定: CURLOPT_COOKIEJAR接收儲存資訊 ,而CURLOPT_COOKIEFILE送出資訊。 ###送出多個cookie內容(變數資料串),分號後要帶1個空格 範例"friut=8923; curl_setopt($s,CURLOPT_COOKIE,"VISITOR_INFO1_LIVE=4kLW9NhJVbI; YSC=KTyxERZA5Io; PREF=f1=50000000"); ###記錄COOKIE資訊,在cookie.txt中(絕對位置) curl_setopt($s,CURLOPT_COOKIEJAR,"C:\\xampp\\htdocs\\mark\\cookie.txt"); ###瀏覽時,把cookie.txt當中的COOKIE資訊一併送出給伺服器 curl_setopt($s,CURLOPT_COOKIEFILE,"C:\\xampp\\htdocs\\mark\\cookie.txt"); #(5)SSL網站 (https開頭) ######抓取SLL網站則要記得開啟verifypeer這行 並設定成false curl_setopt($s,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($s,CURLOPT_SSL_VERIFYHOST,0); //curl_setopt($s, CURLOPT_SSL_CAPATH,cainfo); //curl_setopt($s, CURLOPT_SSL_CAINFO,"cainfo.txt"); //curl_setopt($s, CURLOPT_SSL_VERSION,2); ######是否檢查伺服器端SSL證書中有沒有domain/subdomain name //curl_setopt($s, CURLOPT_SSL_VERIFYHOST,TRUE); # (6)設定等待SERVER的時間~單位秒 curl_setopt($s,CURLOPT_TIMEOUT,15); # (7)重新導向 : 是否跟隨重導 ,設定引入參照, 最大重導次數 curl_setopt($s,CURLOPT_FOLLOWLOCATION,TRUE); curl_setopt($s,CURLOPT_AUTOREFERER,TRUE); curl_setopt($s,CURLOPT_MAXREDIRS,3); //curl_setopt($s,CURLOPT_UNRESTRICTED_AUTH,TRUE); #####(B)最後一次 執行CURL 並把錯誤資訊導出################ $download_page=curl_exec($s); $errors=curl_error($s); ###### 展示並寫入擋案:$download_page & webget.txt ######## echo $download_page."<br>"."抓取結END!"; file_put_contents("WEBget.txt",$download_page); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.184.33.38 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1459329966.A.476.html ※ 編輯: marksam (111.184.33.38), 03/30/2016 17:34:21 ※ 編輯: marksam (111.184.33.38), 03/30/2016 17:38:21

03/30 18:22, , 1F
天啊 ajax網站用curl怎麼抓得完
03/30 18:22, 1F

03/30 18:23, , 2F
人家有API 不要用這種逼豬上樹的方法好嗎
03/30 18:23, 2F
※ 編輯: marksam (111.184.33.38), 03/30/2016 18:51:05

03/30 18:51, , 3F
如何看出有AJAX呢? 慢慢爬JS碼嗎?
03/30 18:51, 3F

03/30 22:16, , 4F
請愛用瀏覽器 F12 快捷鍵,是說這樣來得及結案嗎?
03/30 22:16, 4F
※ 編輯: marksam (111.184.33.38), 03/30/2016 23:10:14

03/30 23:11, , 5F
按了f12阿 但是從我抓下來的內容中 找不到關鍵的ajax
03/30 23:11, 5F

03/30 23:12, , 6F
應該問「從js大海中 看出ajax的關鍵字」是什麼呢?
03/30 23:12, 6F

03/30 23:17, , 7F
https://www.youtube.com/yt/dev/ 不要花時間找了
03/30 23:17, 7F

03/30 23:18, , 8F
有空的話,好好學些 third-party API 卡實在
03/30 23:18, 8F

03/31 00:31, , 9F
蠻好奇他不是要求用bat或exe嘛,php是要
03/31 00:31, 9F

03/31 00:31, , 10F
怎樣用啊
03/31 00:31, 10F

03/31 05:02, , 11F
03/31 05:02, 11F

03/31 09:41, , 12F
你是在抓youtube 不是沒人聽過的2266站好嗎
03/31 09:41, 12F

03/31 09:43, , 13F
這種變態的站根本不用看他有沒有ajax 用聞的就知道了
03/31 09:43, 13F
文章代碼(AID): #1M-vkkHs (PHP)