硒c#w/2Captcha-Recaptcha v2

硒c#w/2Captcha-Recaptcha v2,c#,selenium,recaptcha,captcha,2captcha,C#,Selenium,Recaptcha,Captcha,2captcha,因此,网站需要填写验证码才能登录 我正在使用C#winforms和Selenium Webdrivers以及2Captcha的API 这是我将请求发送到2Captcha的代码 public string SendCaptcha(string APIKey,string GoogleKey,string PageURL) { #region Captcha Solve try { #region POST

因此,网站需要填写验证码才能登录

我正在使用C#winforms和Selenium Webdrivers以及2Captcha的API

这是我将请求发送到2Captcha的代码

    public string SendCaptcha(string APIKey,string GoogleKey,string PageURL)
    {
        #region Captcha Solve
        try
        {
            #region POST
            System.Net.ServicePointManager.Expect100Continue = false;
            var request = (HttpWebRequest)WebRequest.Create("http://2captcha.com/in.php");

            var postData = "key="+APIKey+"&method=userrecaptcha&googlekey="+GoogleKey+"&pageurl="+PageURL; 
            var data = Encoding.ASCII.GetBytes(postData);

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;

            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            var response = (HttpWebResponse)request.GetResponse();

            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            #endregion

            #region GET
            if (responseString.Contains("OK|"))
            {
                string results = responseString.Replace("OK|", "");
                return results;
            }
            else
            {
                return "Error";
            }
            #endregion
        }
        catch (Exception e)
        {
            string tt = e.Message;
            return tt;
        }
        #endregion
    }
这是我从2Captcha获取已解决验证码ID的代码

    public string GetAnswer(string result,string APIKey)
    {
        #region Captcha Solve
        try
        {
            #region POST
            System.Net.ServicePointManager.Expect100Continue = false;
            var request = (HttpWebRequest)WebRequest.Create("http://2captcha.com/res.php");

            var postData = "key="+APIKey+"&action=get&id="+result;
            var data = Encoding.ASCII.GetBytes(postData);

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;

            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            var response = (HttpWebResponse)request.GetResponse();

            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            #endregion

            #region GET
            if (responseString.Contains("OK|"))
            {
                string results = responseString.Replace("OK|", "");
                return results;
            }
            else
            {
                return "Error";
            }
            #endregion
        }
        catch (Exception e)
        {
            string tt = e.Message;
            return tt;
        }
        #endregion
    }
这里是登录/验证码的事情

EHtvdrive.Url = "http://earnhoney.com";
EHtvdrive.FindElementByXPath("//*[@id='regorlogdiv']").Click();
Thread.Sleep(5000);
EHtvdrive.FindElementByXPath("//*[@id='email']").SendKeys(textBox4.Text);
EHtvdrive.FindElementByXPath("//*[@id='psswrd']").SendKeys(textBox3.Text);
label16.Invoke((MethodInvoker)delegate { label16.Text = "Solving Captcha."; });
label16.Invoke((MethodInvoker)delegate { label16.ForeColor = Color.Orange; });
string datakey = EHtvdrive.FindElementByXPath("//[@id='reCAPReg']").GetAttribute("data-sitekey");
string result = SendCaptcha(textBox5.Text, datakey, "http://www.earnhoney.com/en");
Thread.Sleep(60000);
string answer = GetAnswer(result, textBox5.Text);
IJavaScriptExecutor js = (IJavaScriptExecutor)EHtvdrive;
string title = (string)js.ExecuteScript("document.getElementById('g-recaptcha-response').innerHTML='" + answer + "';");
//MessageBox.Show(answer);
Thread.Sleep(3000);
EHtvdrive.FindElementById("loginbtn").Click();
Thread.Sleep(3000);

所以问题是它在GetAnswer上给了我错误返回。有人帮忙吗?我知道这很复杂,但确实需要一些帮助

responseString返回什么以及错误消息是什么?@Tod it返回OK |[Random String],然后需要再次发送该随机字符串以获取已解决的CAPTCHA,您可以在何处解决此问题?Im目前卡在g-recaptcha-response注入部分