В этой статье я расскажу как написать программу на Delphi 2010 которая будет отправлять СМС.
Начнём...
Кидаем на форму:
1. 2 кнопки (вкладка Standart)
2. Поле ввода типа Memo (вкладка Standart)
3. 3 поля ввода (вкладка Standart)
4. Image (вкладка Additional)
5. IdHTTP (вкладка IndyClients)
6. IdSSLIOhandlerSocketOpenSSL (Вкладка Indy I/O Handlers)
Расположим все компоненты примерно так:
Добавим глобальную переменную типа STRING:
var
Form1: TForm1;
codecap:string;
Теперь кликаем по кнопке "Получить каптчу" и вписываем такой вот код:
var FS:TFileStream; s, key:string;
//получаем параметры каптчи
s:=IdHttp1.Get('https://www.beeline.ru/sms/index.wbp');
key:=Copy(s,Pos('afcode" value="',s)+1,Length(s)); //Копируем всё что после
key:=Copy(key,1,Pos('">',key)-1); //Копируем всё что до
Delete(key, 1, 14); //удаляем не нужное
codecap:=key; //копируем параметры каптчи в глобальную переменную!
//получение каптчи
IdHTTP1.Request.Referer:='https://www.beeline.ru/sms/index.wbp';
FS:=TFileStream.Create('vans.gif',FMCreate);
IdHTTP1.Get('https://www.beeline.ru/mamimg.aspx', FS);
FS.Free;
Image1.Picture.LoadFromFile('vans.gif');
В USES надо добавить: GifImg
Запускаем программу и видим что каптча успешно загружается.
Переходим к отправке...
Нам надо узнать какие запросы передаёт сайт, для этого я использую программу HttpAnalyzer.
Скрин передаваемых параметров:
Передаётся всё на https://www.beeline.ru/sms/index.wbp
Переходим к коду отправки СМС:
var Data:TStringList; s:string;
Data:=TStringList.Create;
Data.Add('send=');
Data.Add('smstext='+Memo1.Text); //Текст СМС сообщения
Data.Add('afcode='+codecap); // Параметры каптчи
Data.Add('smstoprefix='+Edit1.Text); //Префикс 940, 960, 970 и т.п.
Data.Add('smsto='+Edit2.Text); // номер
Data.Add('dirtysmstext='+Memo1.Text); //Текст СМС сообщения
Data.Add('confirm_key=');
Data.Add('confirmcode='+Edit3.Text); //Код с картинки
Data.Add('x=33');
Data.Add('y=11');
S:=IdHTTP1.Post('https://www.beeline.ru/sms/index.wbp', Data);
S:=Utf8ToAnsi(S);
if Pos('Сообщение помещено в очередь отправки', S)<>0 then
ShowMessage('Сообщение отправлено!')
else
ShowMessage('Ошибка отправки!');
Вот и всё! Думаю объяснил понятно, но если кто то чего то не понял задавайте вопросы, с удовольствием отвечу на все.
Данный способ подходит для написания авторегеров и разного рода накрутчиков.
P.S. Исходники выкладывать не буду т.к. никто не будет читать что я писал =)
Начнём...
Кидаем на форму:
1. 2 кнопки (вкладка Standart)
2. Поле ввода типа Memo (вкладка Standart)
3. 3 поля ввода (вкладка Standart)
4. Image (вкладка Additional)
5. IdHTTP (вкладка IndyClients)
6. IdSSLIOhandlerSocketOpenSSL (Вкладка Indy I/O Handlers)
Расположим все компоненты примерно так:
Переходим в IdHTTP1 находим свойство IOHandler и присваиваем значение IdSSLIOhandlerSocketOpenSSL
Добавим глобальную переменную типа STRING:
var
Form1: TForm1;
codecap:string;
Теперь кликаем по кнопке "Получить каптчу" и вписываем такой вот код:
var FS:TFileStream; s, key:string;
//получаем параметры каптчи
s:=IdHttp1.Get('https://www.beeline.ru/sms/index.wbp');
key:=Copy(s,Pos('afcode" value="',s)+1,Length(s)); //Копируем всё что после
key:=Copy(key,1,Pos('">',key)-1); //Копируем всё что до
Delete(key, 1, 14); //удаляем не нужное
codecap:=key; //копируем параметры каптчи в глобальную переменную!
//получение каптчи
IdHTTP1.Request.Referer:='https://www.beeline.ru/sms/index.wbp';
FS:=TFileStream.Create('vans.gif',FMCreate);
IdHTTP1.Get('https://www.beeline.ru/mamimg.aspx', FS);
FS.Free;
Image1.Picture.LoadFromFile('vans.gif');
В USES надо добавить: GifImg
Запускаем программу и видим что каптча успешно загружается.
Переходим к отправке...
Нам надо узнать какие запросы передаёт сайт, для этого я использую программу HttpAnalyzer.
Скрин передаваемых параметров:
Передаётся всё на https://www.beeline.ru/sms/index.wbp
Переходим к коду отправки СМС:
var Data:TStringList; s:string;
Data:=TStringList.Create;
Data.Add('send=');
Data.Add('smstext='+Memo1.Text); //Текст СМС сообщения
Data.Add('afcode='+codecap); // Параметры каптчи
Data.Add('smstoprefix='+Edit1.Text); //Префикс 940, 960, 970 и т.п.
Data.Add('smsto='+Edit2.Text); // номер
Data.Add('dirtysmstext='+Memo1.Text); //Текст СМС сообщения
Data.Add('confirm_key=');
Data.Add('confirmcode='+Edit3.Text); //Код с картинки
Data.Add('x=33');
Data.Add('y=11');
S:=IdHTTP1.Post('https://www.beeline.ru/sms/index.wbp', Data);
S:=Utf8ToAnsi(S);
if Pos('Сообщение помещено в очередь отправки', S)<>0 then
ShowMessage('Сообщение отправлено!')
else
ShowMessage('Ошибка отправки!');
Вот и всё! Думаю объяснил понятно, но если кто то чего то не понял задавайте вопросы, с удовольствием отвечу на все.
Данный способ подходит для написания авторегеров и разного рода накрутчиков.
P.S. Исходники выкладывать не буду т.к. никто не будет читать что я писал =)
я увлекаюсь программированием в Delfi и Lazarus))))все норм работает))
ОтветитьУдалитьВладислав, Вы наверное хотели сказать Delphi, а не Delfi. :D
ОтветитьУдалитьСразу видно, что человек очень увлекается программированием.)
Я все читал, но нихера не понял:( Выложи исходники
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьВсе работает, программа всегда пишет "Ошибка отправки", но сообщение доходит. Как это исправить?
УдалитьИзменить условие проверки.
УдалитьДругого ответа я и не ожидал..
УдалитьА можно исходник выложить, не получается, делаю как написано но вышибает ошибку.
ОтветитьУдалитьУ тебя VANS версия Delphi какая?
ОтветитьУдалитьРад студия 2010
Удалитьничего не понял... выложи ванс скрины хотябы как у тебя это всё выглядит.. непонятно ничего
ОтветитьУдалитьVans можно сделать для http://www.orange.md/? а то у меня не получается
ОтветитьУдалитьНе получилось:С
ОтветитьУдалитьВопрос не по теме, какие ЯП посоветуешь выучить?
ОтветитьУдалить