2017-03-15 35 views
-3

我試圖用file_get_contents放棄從網站的數據,而不是網頁源我得到下面的代碼:的JavaScript阻止的file_get_contents

<body onload="challenge();"> 
<script>eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 6(){2.3=\'4=5; 0-7=8; 9=/\';a.b.c()}',13,13,'tax|function|document|cookie|ddosdefend|1d4607e3ac67b865e6c7263260c34e888cae7c56|challenge|age|0|path|window|location|reload'.split('|'),0,{})) 

引擎是WordPress的。有沒有機會獲得真正的來源?

+1

您是否嘗試下載該網頁'wget'並檢查文件? file_get_contents函數似乎可以精確地完成它的工作,您只需運行該網頁的嵌入式JavaScript代碼即可獲得任何有意義的輸出。 –

+1

似乎輸出來自DDOS保護(例如像CouldFlare這樣的內容),可能會在提供所需內容之前向您的抓取工具提供驗證碼。 –

+0

以及當我試圖進入的網站,瀏覽器,它通常加載沒有驗證碼和重定向 –

回答

-1

file_get_contents似乎很好地工作。然而,看起來你沒有得到所需的內容,但一些JavaScript代碼需要在重定向到內容之前進行評估。

,這可能是因爲你要刮網站使用DDOS保護(例如像CouldFlare)檢測你的簡單刮嘗試。

通常,DDOS保護服務是原始的網絡服務器和您的刮板之間的代理。它會檢查您的請求行爲,用戶代理等,並基於它爲您提供原始網絡服務器的內容,或向您提供挑戰(例如驗證碼,或者只是要求您評估JavaScript等)。

如果你能得到原始Web服務器的IP地址,那麼您可以直接訪問它。網絡服務器名稱的DNS解析將引導您訪問代理服務器,因此您必須查看別處。或者,使用模擬PHP中實際瀏覽器行爲的網頁抓取庫。

+0

我檢查了DNS條目,它是cloudflare請告知如何繞過它? –

+0

@GeorgeSamarguliani如果你可以繞過CloudFlare的,那麼它是服務器管理員的一個錯誤(因爲它呈現的CloudFlare保護沒用)。有時,原始服務器的IP地址可以在直接從Web服務器發送的電子郵件中找到。或者服務器軟件上的信息披露漏洞披露了IP。但是,很可能您找不到原始IP。 –

+0

那麼有沒有其他方法通過避免cloudflare protetcion從網頁獲取部分源代碼? –