0

So the website requires a captcha fill out in-order to login.

I'm using C# winforms and Selenium Webdrivers along with 2Captcha's API

Here's the code I got to send the request to 2Captcha's

    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
    }

Here's the code i got to get the solved captcha ID from 2Captcha

    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
    }

And here is the login/Captcha thing

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);

So the problem is that it gives me the Error return on the GetAnswer. Any help here? I know this is pretty complicated but really could use some help on this.

Zoe
  • 27,060
  • 21
  • 118
  • 148
Coderz
  • 215
  • 2
  • 7
  • 20

0 Answers0