:
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データにアクセスしてイメージのデータをダウンロードできました私はそれからビットマップになって戻ってきました。
参照:[Xを行うにはどうすればいいですか?](https://meta.stackoverflow.com/questions/253069/whats-the--new-current-close-reason-for-how-do-i- do-x)SOに関する期待は、質問するユーザーが自分の質問に答えるだけでなく、その調査、コードの試行、結果を共有することです。これは、時間をかけて自分自身を助けようとしていることを示しています。明白な回答を繰り返さないようにしてくれています。そして、より具体的で適切な答えを得ることができます。私はこの現在の状況で動作している有効なコードがないので、共有コードは役に立たないでしょう。[Ask] – JeffC
@JeffC私は質問をしました。なぜなら、私はオンラインで何も見つけ出しておらず、誰かが何か似ているか、セレンとファントムジを私よりよく理解していることを願っています。 – Jaxi
明らかに、作業コードは持っていませんが、コードの試行を共有する必要があります。あなたが何らかの調査をしたこととその調査の結果を示すものです。また、サイトへのリンクを共有することもできます。 – JeffC