|
| Дата |
|
USD/RUB | 90.7493 | BTC/USD | 70594.2232 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
12.03.2011, 03:40
|
#1
|
Юниор
Регистрация: 03.01.2011
Сообщений: 17
Бабло: $5885
|
C# авторегистратор
Доброго времени суток!
Я изучаю С# около недели, и мне понадобилось написать авторегистратор.
Собственно, программа состоит из двух запросов и ручного ввода каптчи, вначале get(чтобы узнать ссылку на каптчу), потом post.
Первая часть программы точно работает(get запрос), а вот с post запросом есть проблемы... Только где именно я не могу понять =(
Вот исходник:
http://zalil.ru/30654215
button click 2(get captcha) - находит id каптчи и выводит картинку на экран
button click 1(send captcha) - передает id в переменную
button click 3(registration) - отправить post запрос
|
|
|
12.03.2011, 03:53
|
#3
|
Ебланнед
Регистрация: 03.06.2008
Сообщений: 3,846
Бабло: $432125
|
кстати ты сегодня набрал сообщения наверное чтобы создать эту тему, так что спрошу, а нет ли в архиве по ссылке подарка?
|
|
|
12.03.2011, 12:31
|
#4
|
Senior Member
Регистрация: 02.07.2010
Сообщений: 214
Бабло: $45115
|
Никакого желания качать архив. Хочешь - выложи здесь свои get и post запросы.
|
|
|
12.03.2011, 14:14
|
#5
|
Юниор
Регистрация: 03.01.2011
Сообщений: 17
Бабло: $5885
ТС -->
|
ТС
Код:
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//переменные
public string Username = string.Empty;
public string Password = string.Empty;
public string Email = string.Empty;
public string Capcha = string.Empty;
public string Id = string.Empty;
public const string Url = "http://byethost.com/signup.php";
public CookieContainer CookieCont = new CookieContainer();
public void button2_Click(object sender, EventArgs e) // кнопка get captcha
{
#region GET-запрос
var reqGet = (HttpWebRequest)WebRequest.Create(Url);
reqGet.CookieContainer = CookieCont; //куки
var resp = reqGet.GetResponse();
var stream = resp.GetResponseStream();
var sr = new StreamReader(stream);
var s = sr.ReadToEnd();
const string reg = @"http\:\/\/byet\.org\/image\.php\?id=\w{30,32}";
const string reg2 = "[a-z0-9]{32}";
var isMatch = Regex.Match(s, reg, RegexOptions.IgnoreCase);
var isMatchEnd = Regex.Match(isMatch.ToString(), reg2, RegexOptions.IgnoreCase);
webBrowser1.Navigate(isMatch.ToString());
Id = isMatchEnd.ToString();
#endregion
}
public static void Params(string username, string password, string email)//генерирование некоторых параметров
{
var rand = new Random();
username = "";
for (var j = 0; j < 7; j++)
{
username = username + (char)rand.Next('a', 'z');
}
password = username;
email = username + "@yopmail.com";
var sw = new StreamWriter("Result.txt", false);
sw.WriteLine(username+";"+password+";"+email+";");
sw.Close();
}
public void button1_Click(object sender, EventArgs e) //присваиваем id каптчи, которую получили, для отправки в параметры
{
Capcha = textBox1.Text;
}
public void button3_Click(object sender, EventArgs e)
{
var myReq = (HttpWebRequest)WebRequest.Create(Url);
myReq.CookieContainer = CookieCont; //присваиваем куки
myReq.Method = "POST";
myReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
myReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.17) Gecko/20110121 Firefox/3.5.17 ( .NET CLR 3.5.30729; .NET4.0E)";
myReq.Timeout = 300000;
myReq.KeepAlive = true;
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.Referer = "http://byethost.com/signup.php";
Params(Username, Password, Email); //используем метод для генерации
byte[] sentData = Encoding.GetEncoding(1251).GetBytes("username=" + Username + "&password=" + Password + "&email=" + Email + "&website_category=Personal&website_language=English&id=" + Id + "&number=" + Capcha + "&submit=Register");
myReq.ContentLength = sentData.Length;
var sendStream = myReq.GetRequestStream();
sendStream.Write(sentData, 0, sentData.Length);
Thread.Sleep(1000);
sendStream.Close();
var result = myReq.GetResponse();
Thread.Sleep(1000);
result.Close();
CookieCont = null;
}
}
}
|
|
|
12.03.2011, 14:16
|
#6
|
Юниор
Регистрация: 03.01.2011
Сообщений: 17
Бабло: $5885
ТС -->
|
ТС
Цитата:
Сообщение от super
кстати ты сегодня набрал сообщения наверное чтобы создать эту тему, так что спрошу, а нет ли в архиве по ссылке подарка?
|
нет там подарка, если хочешь проверь на virustotal =)
|
|
|
12.03.2011, 15:32
|
#7
|
Senior Member
Регистрация: 02.07.2010
Сообщений: 214
Бабло: $45115
|
1. Ты не на тот адрес шлешь пост-запрос.
Поставь Fiddler. Заполни один раз форму на сайте. В фиддлере появятся все параметры нужного запроса: адрес, куки, параметры и пр.
Потом надо будет это повторить программно.
2. Кнопка button1 лишняя. Сразу присваивай значение и отправляй запрос.
3. Проверь, чтобы в запросе всем переменным были присвоены значения. Сейчас пустые передаются.
|
|
|
12.03.2011, 15:49
|
#8
|
Senior Member
Регистрация: 16.07.2009
Сообщений: 938
Бабло: $152632
|
Ты не туда шлешь POST-запрос и у тебя проблемы с генерацией параметров. Cookie вообще не нужны.
Забирай, http://paste.org.ru/?5xu9f3
А лучше купи себе ЗенноПостер, но язык не бросай всё равно)
|
|
|
12.03.2011, 15:58
|
#9
|
Юниор
Регистрация: 03.01.2011
Сообщений: 17
Бабло: $5885
ТС -->
|
ТС
1. Fiddler у меня есть.
2. кнопка не лишняя, потому что ввод каптчи ручной.
3. у всех переменных есть значения.
|
|
|
12.03.2011, 16:00
|
#10
|
Юниор
Регистрация: 03.01.2011
Сообщений: 17
Бабло: $5885
ТС -->
|
ТС
Цитата:
Сообщение от spamless
Ты не туда шлешь POST-запрос и у тебя проблемы с генерацией параметров. Cookie вообще не нужны.
Забирай, http://paste.org.ru/?5xu9f3
А лучше купи себе ЗенноПостер, но язык не бросай всё равно)
|
Спасибо, сейчас проверю
===============
Даа, все работает, огромное спасибо!
|
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
|