ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Рабочий код C# для antigate или captchabot.
  #1  
Старый 21.01.2010, 22:11
Аватар для Klimukov
Klimukov
Новичок
Регистрация: 21.01.2010
Сообщений: 3
Провел на форуме:
8618

Репутация: 0
Exclamation Рабочий код C# для antigate или captchabot.

Приветствую.

Хочу подключить к свой программе на C#
сервис по распознаванию каптч.

Столкнулся с трудностью:

Примеры кодов,представленные на сервисах, для подключения antigate и captchabot к программе не заработали.

Пытался сам написать, но уже какое время бьюсь ничего не вышло.

Если у кого есть рабочий вариант по подключению любого из сервисов к программе на C#
прошу поделиться. (пишу в VS2008)

Ну или подскажите, где можно почитать, как это можно сделать самому.


Заранее благодарен.
Готов стать рефом на любом из перечисленных сервисов.
 
Ответить с цитированием

  #2  
Старый 21.01.2010, 22:47
Аватар для .ATK
.ATK
Участник форума
Регистрация: 20.02.2009
Сообщений: 224
Провел на форуме:
5075819

Репутация: 274
По умолчанию

Сам класс:
Цитата:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Web;
using System.Windows.Forms;
using System.Threading;

namespace LP
{

public class PostData5
{
private string s_method = String.Empty;

public string Method { get { return this.s_method; } }
private string s_action = String.Empty;

public string Action { get { return this.s_action; } }
public string Param { get { return this.s_param; } }

private string s_param = String.Empty;
public PostData5(string s_PostString)
{
if (s_PostString.IndexOf("=") != -1)
{
this.s_method = s_PostString.Substring(0, s_PostString.IndexOf("="));
this.s_action = s_PostString.Substring(s_PostString.IndexOf("=") + 1);
if (this.s_action.IndexOf("!") != -1)
{
this.s_action = s_action.Substring(0, this.s_action.IndexOf("!")); this.s_param = s_PostString.Substring(s_PostString.IndexOf("!") + 1);
}

}

}
public static string MultiFormData(string Key, string Value, string Boundary)
{
lock (typeof(PostData5))
{
string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"\r\n\r\n";
output += Value + "\r\n";
return output;
}
}
public static string MultiFormDataFile(string Key, string Value, string FileName, string FileType, string Boundary)
{
lock (typeof(PostData5))
{
string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"; filename=\"" + FileName + "\"\r\n"; output += "Content-Type: " + FileType + " \r\n\r\n";
output += Value + "\r\n";
return output;
}
}
}

public class AntiCaptcha
{
public string captcha_id;
public string response_str;
public string GetText(string KapchaKey, string patch, int delay)
{
try
{

//Картинка содержится в теле ответа сервера myResp
//Запрос
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create("http://antigate.com/in.php");
myReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 WebMoney Advisor";
myReq.Accept = "*/*";
myReq.Headers.Add("Accept-Language", "ru");
myReq.KeepAlive = true;
myReq.AllowAutoRedirect = false;
myReq.Method = "POST";

//пост параметры
string sBoundary = DateTime.Now.Ticks.ToString("x");
myReq.ContentType = "multipart/form-data; boundary=" + sBoundary;
string sPostMultiString = "";
sPostMultiString += PostData5.MultiFormData("method", "post", sBoundary);
sPostMultiString += PostData5.MultiFormData("key", KapchaKey, sBoundary);
sPostMultiString += PostData5.MultiFormData("file", Path.GetFileName(patch), sBoundary);
sPostMultiString += PostData5.MultiFormData("numeric", "1", sBoundary);//нулик для вконтакта)))
sPostMultiString += PostData5.MultiFormData("regsense", "0", sBoundary);//чувствителен к регистру!!!
string sFileContent = "";

Stream fStream = null;
fStream = File.OpenRead(patch);
int nread;
try
{
byte[] buffer = new byte[4096];
while ((nread = fStream.Read(buffer, 0, 4096)) != 0)
sFileContent += Encoding.Default.GetString(buffer);
fStream.Close();
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}



sPostMultiString += PostData5.MultiFormDataFile("file", sFileContent, Path.GetFileName(patch), "image/pjpeg", sBoundary);
sPostMultiString += "--" + sBoundary + "--\r\n\r\n";
byte[] byteArray = Encoding.Default.GetBytes(sPostMultiString);
myReq.ContentLength = byteArray.Length;
myReq.GetRequestStream().Write(byteArray, 0, byteArray.Length);
string pg = "";
string s = "";
try
{
HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();

StreamReader reader = new StreamReader(myResp.GetResponseStream(), Encoding.GetEncoding(1251));

pg = reader.ReadToEnd();
string[] pars = pg.Split(new char[1] { '|' }, StringSplitOptions.RemoveEmptyEntries);
captcha_id = pars[1];
s = pars[1];
}
catch (Exception exc)
{
if (pg == "ERROR_NO_SLOT_AVAILABLE")
return "ERROR_NO_SLOT_AVAILABLE";
}

//Надо добавить обработку ошибок

//Ждём распознавания капчи
try
{
for (int i = 0; i < 30; i++)
{
Thread.Sleep(delay);

HttpWebRequest myReq2 = (HttpWebRequest)HttpWebRequest.Create("http://antigate.com/res.php?key=" + KapchaKey + "&action=get&id=" + s);

myReq2.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 WebMoney Advisor";
myReq2.Accept = "*/*";
myReq2.Headers.Add("Accept-Language", "ru");
myReq2.KeepAlive = true;
myReq2.AllowAutoRedirect = false;
myReq2.Method = "GET";

HttpWebResponse ret2 = (HttpWebResponse)myReq2.GetResponse();

StreamReader reader = new System.IO.StreamReader(ret2.GetResponseStream(), Encoding.GetEncoding(1251));
pg = reader.ReadToEnd();
response_str = pg;
myReq2.Abort();
reader.Close();
ret2.Close();
myReq2 = null;
ret2 = null;
if (pg != "CAPCHA_NOT_READY")
{
string[] pars = pg.Split('|');

if (pars[0] == "OK")
{
return pars[1];
}
}

}
}
catch (Exception exc)
{
return exc.Message;
}
return "000000";
}
catch { return "000000"; }
}
public string FalseCaptcha(string KapchaKey)
{
string pg = "";
try
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create("http://antigate.com/res.php?key=" + KapchaKey + "&action=reportbad&id=" + captcha_id);
myReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 WebMoney Advisor";
myReq.Accept = "*/*";
myReq.Headers.Add("Accept-Language", "ru");
myReq.KeepAlive = true;
myReq.AllowAutoRedirect = false;
myReq.Method = "GET";

HttpWebResponse ret = (HttpWebResponse)myReq.GetResponse();

StreamReader reader = new StreamReader(ret.GetResponseStream(), Encoding.GetEncoding(1251));
pg = reader.ReadToEnd();
myReq.Abort();
reader.Close();
ret.Close();

}
catch
{
FalseCaptcha(KapchaKey);
}
return pg;
}
}
}
Пример использования:
Цитата:
string check = String.Empty;
do
{
AntiCaptcha anticap = new AntiCaptcha();
check = anticap.GetText(FormState.anticaptcha, pic_name, 10000);
if (check == "ERROR_NO_SLOT_AVAILABLE")
{ }
lock (this) { this.Invoke(log_program, DateTime.Now + " = поток получил ответ: " + check + " на " + pic_name + "..."); }
Thread.Sleep(2000);
}
while ((check == "ERROR_NO_SLOT_AVAILABLE"));

r_ob.text_captcha = check;
По-моему, это тот же класс, что и на антикапче лежит...

зы.
Цитата:
sPostMultiString += PostData5.MultiFormData("numeric", "1", sBoundary);//нулик для вконтакта)))
sPostMultiString += PostData5.MultiFormData("regsense", "0", sBoundary);//чувствителен к регистру!!!
про это в faq почитай
 
Ответить с цитированием

  #3  
Старый 22.01.2010, 21:23
Аватар для Klimukov
Klimukov
Новичок
Регистрация: 21.01.2010
Сообщений: 3
Провел на форуме:
8618

Репутация: 0
По умолчанию

Спасибо разобрался.
Не ожидал, что тут такая отзывчивая аудитория.
Спасибо.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскрутка сайта heks Статьи 15 15.02.2009 19:51
Софт для мобильных телефонов под *nix Grrl Сотовый фрикинг 2 02.03.2007 01:47
Редактирование содежимого прошивок для Самсунгов Digimortal Схемы и программы 3 28.02.2007 14:22
10 вещей, которые вам нужно знать про Vista Firewall ground_zero Мировые новости 2 11.02.2007 19:02
Взлом Unix а silveran *nix 4 21.12.2005 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ