2017-03-15 4 views
-3

私はfile_get_contentsを使用して、ウェブサイトからのデータをスクラップしようとしているが、代わりにWebページのソースの私は、次のコードを取得していないよう: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,{})) 

エンジンがワードプレスです。本当の情報源を得る機会はありますか?

+1

このウェブページをダウンロードしてみましたか? 'wget'とファイルを調べる? file_get_contents関数はプローバとして機能しているようですが、意味のある出力を得るには、そのWebページの埋め込みJavaScriptコードを実行するだけです。 –

+1

出力がDDOS保護(CouldFlareのようなもの)のようですが、あなたのスクレーパーに希望のコンテンツを提供する前にキャプチャを提示するかもしれません。 –

+0

よくブラウザでウェブサイトにアクセスしようとすると、キャプチャとリダイレクトなしで正常に読み込まれます –

答えて

-1

file_get_contentsが正常に動作しているようです。しかし、あなたは目的のコンテンツが提供されていないようですが、コンテンツにリダイレクトする前に評価する必要のあるJavaScriptコードがあります。

これは、スクラップしたいウェブサイトが、簡単な掻き取りを検出するDDOS保護(CouldFlareなど)を使用している可能性があります。

通常、DDoS保護サービスは、元のWebサーバーとスクレーパーの間のプロキシです。リクエストの動作やユーザーエージェントなどを調べ、元のウェブサーバーのコンテンツを提供するか、チャレンジを表示します(例:captcha、または単にjavascriptなどを評価する必要があります)。

元のWebサーバーのIPアドレスを取得できる場合は、直接アクセスできる可能性があります。 Webサーバーの名前のDNS解決によって、プロキシが表示されるため、別の場所を見なければなりません。また、PHPで実際のブラウザの動作をエミュレートするWebスクレイピングライブラリを使用することもできます。

+0

DNSエントリを確認しましたが、それは曇っていますか?それを回避する方法を教えてください? –

+0

@GeorgeSamarguliani Cloudflareをバイパスすることができれば、サーバー管理者の間違いです(Cloudflare保護が役に立たなくなるため)。場合によっては、元のサーバーのIPアドレスはWebサーバーから直接送信される電子メールで見つけることができます。または、サーバーソフトウェアの情報漏えいの脆弱性により、IPが公開されます。しかし、元のIPを見つけることができない可能性があります。 –

+0

cloudflare protetcionを避けることによってWebページからソースコードの一部を取得する他の方法はありますか? –