Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.07.2007, 08:24   #1
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию idHTTP GET и POST запросы

вобщем столкнулся с такой проблемой на одном сайте сначала делается GET запрос при загрузке сайта и там в странице есть одна переменная которая должна участвовать в POST запросе!
строка выглядит так:

Код HTML:
<input type="hidden" name="__VIEWSTATE" value="dDwxNTQzMzE2MDk4O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPDE1OTM3Oz4+Oz47Oz47Pj47Pj47bDxJbnB1dEJ1dHRvbjtSZXNCdXR0b247Pj6vrei9o0+p1dY9AeM/4gIIJDYSAQ==" />
Вопрос как её мне отдельно вытащить в переменную?
зараннее спасибо!
FAiver вне форума
Старый 13.07.2007, 08:38   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. готов поспорить что она генерируется динамически
2.Вытащить элементарно:
get - получаешь html этой страницы, ищешь эту скрытый инпут по названию и вытаскиваешь её значение.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Старый 13.07.2007, 08:41   #3
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию

а можно с примером как искать этот инпут по названию и процес вытаскивания?
FAiver вне форума
Старый 13.07.2007, 08:48   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

var s,sres:string;
...
s:=idhttp.get('...');
sres:=copy(s,pos('__VIEWSTATE',s)+2 1,length(s)-pos('__VIEWSTATE',s)+20);
sres:=copy(sres,1,length(sres)-4);
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Старый 13.07.2007, 11:23   #5
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию

Спосибо за помощь!
но немного не так работает.... вместо того чтобы загрузить одну строку получается что в переменной у нас находится почти вся страница! т.е. от начала значения и до конца страницы -4 символа ...
как это исправить?
FAiver вне форума
Старый 13.07.2007, 11:37   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Соответственно выяснилось так:
var s,sres:string;
...
s:=idhttp.get('...');
sres:=copy(s,pos('__VIEWSTATE',s)+2 1,length(s)-pos('__VIEWSTATE',s)+20);
sres:=copy(sres,1,pos('/>',sres));
sres:=copy(sres,1,length(sres)-3);
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Старый 13.07.2007, 16:02   #7
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию

Ещё раз спасибо!!
но вот тут выяснил что для общения с этим сайтом нужно организовывать WSASend и WSARecv на чём это можно организавать в делфи?
ктонибудь может обьяснить есть разница между простым Send и WSASend или разницы нету?

Последний раз редактировалось FAiver; 13.07.2007 в 16:24.
FAiver вне форума
Старый 14.07.2007, 19:42   #8
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Я похоже даже знаю для чего Вы программу пишите! Там расширение страницы не *.html, а *.aspx, да? Сам сейчас пробую написать программу для этого сайта. Готовы ли вы поделиться исходником того что у Вас уже написано? А того что будет написано?

Квэнди, можно поподробней расписать об этой части кода? А то мне что-то не очень понятно как работает!
sres:=copy(s,pos('__VIEWSTATE',s)+2 1,length(s)-pos('__VIEWSTATE',s)+20);
sres:=copy(sres,1,length(sres)-4);

То есть в переменную sres копируется следующее: в коде полученной страницы ищется текст "__VIEWSTATE", для чего здесь ('__VIEWSTATE',s) указывается "s"? Что значит 21 и 20? И о последней строке тоже, пожалуйста поподробней.
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.

Последний раз редактировалось CoDeR; 14.07.2007 в 20:03.
CoDeR вне форума
Старый 15.07.2007, 16:53   #9
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию

Цитата:
Сообщение от CoDeR Посмотреть сообщение
Квэнди, можно поподробней расписать об этой части кода? А то мне что-то не очень понятно как работает!
sres:=copy(s,pos('__VIEWSTATE',s)+2 1,length(s)-pos('__VIEWSTATE',s)+20);
sres:=copy(sres,1,length(sres)-4);

То есть в переменную sres копируется следующее: в коде полученной страницы ищется текст "__VIEWSTATE", для чего здесь ('__VIEWSTATE',s) указывается "s"? Что значит 21 и 20? И о последней строке тоже, пожалуйста поподробней.
21 и 20 это количество символов от "__VIEWSTATE" до начала нужной строки )
исходниками поделюсь так как это стало не актуально... потомучто сайт прекратил неограниченную раздачу халявы... но всёже былобы интересно закончить ту програмку что бы понять что к чему

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
zap:TStringList;
s,strok,time:string;
begin
randomize;
  //idHTTP1.ProxyParams.ProxyServer:='192.168.0.1';
  //idHTTP1.ProxyParams.ProxyPort:=8080;
      //загрузка пераой страницы! получение строки
 try
    s:=idHTTP1.Get('http://izobilnik.ru/start01.aspx');
    strok:=copy(s,pos('__VIEWSTATE',s)+21,length(s)-pos('__VIEWSTATE',s)+20);
    strok:=copy(strok,1,pos('/>',strok));
    strok:=copy(strok,1,length(strok)-3);
 except
 end;
memo1.Lines.Add(strok);
zap:=TStringList.Create;

  //отправка данных на первую страницу

Application.ProcessMessages;
zap.Add('__VIEWSTATE='+strok);
zap.Add('AccountRadioButtonList='+'0');
zap.Add('InputButton.x='+FloatToStr(random(100)));
zap.Add('InputButton.y='+FloatToStr(random(100)));
  try
    s:=idhttp1.Post('http://izobilnik.ru/start01.aspx',zap);
  except
zap.Free;
end;

//загрузка второй страницы! получение строки

 try
    s:=idHTTP1.Get('http://izobilnik.ru/random11.aspx');
    strok:=copy(s,pos('__VIEWSTATE',s)+21,length(s)-pos('__VIEWSTATE',s)+20);
    strok:=copy(strok,1,pos('/>',strok));
    strok:=copy(strok,1,length(strok)-3);
    time:=copy(s,pos('Label5',s)+82,length(s)-pos('Label5',s)+81);
    time:=copy(time,1,pos('</font>',time));
    time:=copy(time,1,length(time)-1);
 except
 end;
 memo1.Lines.Add(strok);
  // узнаем время проверки
memo1.Text:=memo1.Text+utf8toansi(time);


//передача данных на random11.aspx
  zap:=TStringList.Create;
  Application.ProcessMessages;
  zap.Add('__VIEWSTATE='+strok);
  zap.Add('rbl1=1');
  zap.Add('ddl=11');
  zap.Add('TextBox2=918*******');//здесь нужно указывать номер своего телефона
  zap.Add('ImageButton1.x='+FloatToStr(random(100)));
  zap.Add('ImageButton1.y='+FloatToStr(random(100)));
    try
      s:=idhttp1.Post('http://izobilnik.ru/random11.aspx',zap);
    except
zap.Free;
end;

 try
    strok:='';
    s:=idHTTP1.Get('http://izobilnik.ru/start03.aspx');
    strok:=copy(s,pos('__VIEWSTATE',s)+21,length(s)-pos('__VIEWSTATE',s)+20);
    strok:=copy(strok,1,pos('/>',strok));
    strok:=copy(strok,1,length(strok)-3);
 except
 end;

end;

end.
FAiver вне форума
Старый 15.07.2007, 22:44   #10
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

То есть осталось уже только в случае угадывания цвета нажать на баннер?
Сам не могу попробавать сделать, потому что что-то не хочет работать. Программу запускаю, пишет время с какого и по какое можно проверить результат, но если захожу на сайт, на страницу просмотра результата, то мне пишут что от меня заявки даже небыло!
zap.Add('ddl=11'); поменял на номер нужный для моего оператора. Номер тоже поменял на свой. Или я гдё-то ещё что-то упустил?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WebBrowser POST micq Компоненты Delphi 5 19.09.2008 21:37
post запрос Editor Работа с сетью в Delphi 4 20.04.2008 14:01
POST Stanislav Работа с сетью в Delphi 3 03.03.2008 18:05
Все тот же IdHTTP (Post) AVer Работа с сетью в Delphi 5 28.09.2007 10:40
HTTP POST SJMS Работа с сетью в Delphi 15 30.05.2007 13:36