WebBrowser与mshtml获取动态验证码

   动态验证码:同一个链接,但每次请求都得到不同图片的验证码。我们可以通过WebBrowser与mshtml结合的方式来获取动态验证码,可以确保我们获取到本地的验证码图片与第一次请求该验证码所在网页中的图片一致。

   本文以NydusVPN的登录页面为例来说明我尝试过的获取动态验证码的方法,该网站可以通过签到和推广获取VPN的免费使用时间,我的推广链接:NydusVPN

   1.HttpHelper获取动态验证码

   这个方法是从苏飞论坛上学来的,方法概要:首先请求NydusVPN的登录页面,获取Cookie和动态验证码链接;然后带着Cookie发出第二次请求,并将返回的验证码图片显示在我们指定的位置,第二次请求的是第一次获取的动态验证码链接。

   事实上,第二次请求得到的验证码与我们第一次请求时页面加载的验证码是不一样的,如果按照第二次获取的验证码去提交登录请求,是不能成功的,我觉得登录不成功的原因应该是验证码不正确。不过这种方法用于获取非动态的验证码应该是没有问题的。

   针对这个问题点,我在苏飞论坛上有发帖求助,苏飞站长也进行了回复,但目前还并没有实质性的进展,有兴趣的同学可以去围观,求助帖的地址:http://www.sufeinet.com/thread-13273-1-1.html

   2.WebBrowser与mshtml获取动态验证码

   这个方法的大致思路:加载登录页面,获取动态验证码的HTML元素,再通过execCommand()实现浏览器的COPY功能将验证码保存到本地。实现该方法的简易的界面与代码如下:

The interface of getting NyDus Captcha

   3.调整WebBrowser的尺寸

   我在使用WebBrowser产生过调整其尺寸的疑问,其实WebBrowser放置在我们窗体上的时候,它默认父容器中停靠,此时它会占据我们窗体的全部,而且没有办法调整它在父容器中的大小和位置。不过只要我们通过该控件右上角的小三角“取消在父容器中停靠”,我们就可以随意安排它的位置与大小了。

Control the size of WebBrowser

No Responses

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub