如何保存Captcha图像而不改变它

时间:2014-11-12 02:35:51

标签: c# captcha

我希望自动登录我的几个帐户以获取各种服务,以检查数据并通过电子邮件发送给自己。 问题是验证码。我之前试过绕过它们却失败了。

任何人都可以向我证实这一步,我可以找到任何地方似乎没有参考。 如果我使用c#来制作网页请求 - 我可以读取验证码等的URL,但在保存它时,它似乎会将图像的值更改为动态。 我可以将图像发送到Deathbycapture等但我无法在没有重新生成的情况下从Web请求中物理保存图像 - 即使请求未加载到浏览器中 - 一次调用url并且它似乎会生成新图像。

任何想法。

1 个答案:

答案 0 :(得分:1)

找到答案。

问题是 - 当我在c#中调用URL时 - 它生成了一个非常简单的验证码 - 与网站在浏览器中显示的内容完全不同。 那是因为我对验证码网址的所有调用都没有排除我在网站上正常使用的cookie等 - 似乎造成了很大的差异:

public Image GetImage(string url)
    {
        HttpWebRequest request = GetWebRequest(url);
        var responseData = "";

        if (request == null)
            return null;

        request.Method = "GET";
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        request.ContentType = "application/x-www-form-urlencoded";
        request.CookieContainer = cookieContainer;
        request.UserAgent = RefreshUserAgent();
        request.KeepAlive = true;
        request.AllowAutoRedirect = _allowAutoRedirect;
        request.Referer = _referer;
        request.Timeout = TimeoutInterval;

        //Decode Response
        request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

        try
        {
            var response = (HttpWebResponse)request.GetResponse();
            response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
            return Image.FromStream(response.GetResponseStream());

        }
        catch(Exception ex)
        {

            Console.WriteLine(ex.Message);
        }


        return null;
    }

现在更新我的图片提取代码以生成与我的Get / Post请求相同的方式