【问题标题】:Set picturebox image to image from PhantomJS loaded page将图片框图像设置为来自 PhantomJS 加载页面的图像
【发布时间】:2018-01-05 01:43:57
【问题描述】:

目前的情况是我正在使用 PhantomJS 和 Selenium 加载网页,因为主机网站在 cloudflare ddos​​ 保护之后,所以我不能使用任何没有内置 javascript 的东西。这一直运作良好有一段时间,但该网站最近一直在使用他们自己的 CDN 来传递这些图像,这在将 PictureBox.ImageLocation 设置为 src 时会导致问题。

如果有任何方法可以获取 <img> 标签 src,并将其转换为 bitmapimage 以便能够直接在我的图片框中使用来自 PhantomJS 的图像,那就太棒了。

感谢您的帮助。

【问题讨论】:

  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • @JeffC 共享代码没有用处,因为我没有可以在当前情况下工作的有效代码。我问了这个问题,因为我在网上找不到任何东西,并希望有人有类似的东西或比我更了解 selenium 和 phantomjs。
  • 显然你不会有工作代码,但你需要分享代码尝试......这表明你已经做了一些调查和调查的结果。您还可以分享该网站的链接。

标签: c# selenium selenium-webdriver phantomjs picturebox


【解决方案1】:

对于和我一样情况的人:

事实证明,为 PhantomJS 和 selenium 存储适当的缓存并不容易,所以我转向了另一种方法,最终成功了。

当 PhantomJS 访问您的网站被锁定在 JS 墙后(例如 CloudFlare DDOS 保护)时,它很可能会存储一个带有身份验证令牌的 cookie,表明您的浏览器通过了测试。

起初,它对我不起作用,因为 CloudFlare 似乎还记录了哪个用户代理已对该令牌进行了身份验证,并且任何不匹配都会丢弃使用的令牌。

我设法使用以下代码解决了这个问题:

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 只是一个普通网站,对我使用的网站进行了一些调整。

我基本上使用了与我的 PhantomJS 驱动程序使用的相同的伪造用户代理,并在标头中传递了 CloudFlare 清除 cookie,然后我的网络客户端能够成功访问网站数据并下载图像数据,然后我把它变成一个位图并返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多