2017-07-28 41 views
0

現在の状況は、Webページを読み込むためにPhantomJSとSeleniumを使用しています。ホストWebサイトがcloudflare ddos​​保護の背後にあるため、使用できないものは使用できません。これはしばらくの間うまくいきましたが、ウェブサイトは最近、これらの画像を配信するために独自のCDNを使用していました。このため、PictureBox.ImageLocationをsrcに設定すると問題が発生します。PhantomJSから画像を画像に読み込みました。

<img>タグのSRCを取得する方法があれば、それは素晴らしいことだ、私のPictureBoxでPhantomJSから直接画像を使用できるようにbitmapまたはimageにそれを変換します。

ありがとうございました。私と同じ状況にある人たちのために

+0

参照:[Xを行うにはどうすればいいですか?](https://meta.stackoverflow.com/questions/253069/whats-the--new-current-close-reason-for-how-do-i- do-x)SOに関する期待は、質問するユーザーが自分の質問に答えるだけでなく、その調査、コードの試行、結果を共有することです。これは、時間をかけて自分自身を助けようとしていることを示しています。明白な回答を繰り返さないようにしてくれています。そして、より具体的で適切な答えを得ることができます。私はこの現在の状況で動作している有効なコードがないので、共有コードは役に立たないでしょう。[Ask] – JeffC

+0

@JeffC私は質問をしました。なぜなら、私はオンラインで何も見つけ出しておらず、誰かが何か似ているか、セレンとファントムジを私よりよく理解していることを願っています。 – Jaxi

+0

明らかに、作業コードは持っていませんが、コードの試行を共有する必要があります。あなたが何らかの調査をしたこととその調査の結果を示すものです。また、サイトへのリンクを共有することもできます。 – JeffC

答えて

0

PhantomJSとセレンのための適切なキャッシュを格納することは容易ではなかったことが判明したので、私は働くことになった代替ルートになりました。

PhantomJSがJS壁(CloudFlare DDOS Protectionなど)の後ろにロックされているあなたのウェブサイトにアクセスすると、ブラウザがテストに合格したことを示す認証トークンを持つクッキーが保存されます。

CloudFlareは、どのユーザーエージェントがそのトークンに対してauth'dを記録しているかと思われ、不一致が使用されたトークンを破棄するように見えるため、最初はうまくいきませんでした。

私は次のコードを使用してこの問題を解決するために管理:このコードで

private Image GetImage(string ImageLocation) 
{ 
    byte[] data = null; 
    using (CustomWebClient WC = new CustomWebClient()) 
    { 
     WC.Headers.Add(System.Net.HttpRequestHeader.UserAgent, "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A403 Safari/601.1.46"); 
     WC.Headers.Add(System.Net.HttpRequestHeader.Cookie, "cf_clearance=" + PhantomObject.Manage().Cookies.GetCookieNamed("cf_clearance").Value); 
     data = WC.DownloadData(ImageLocation); 
    } 
    Bitmap MP = new Bitmap(new System.IO.MemoryStream(data)); 
    data = null; 
    return MP; 
} 

PhantomObjectは私PhantomJSドライバオブジェクトで、CustomWebClientはウェブサイトIのための調整のビットと普通のウェブサイトです使用していた。

PhantomJSドライバが使用していた同じ偽のユーザーエージェントを使用し、CloudFlareクリアランスクッキーをヘッダーに渡します。そこからWebクライアントが正常にWebデータにアクセスしてイメージのデータをダウンロードできました私はそれからビットマップになって戻ってきました。

関連する問題