Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.01;
Скачать: CL | DM;

Вниз

Автоматическая отправка данных форм   Найти похожие ветки 

 
Stranger   (2007-12-01 19:05) [0]

Доброго времени суток.
Ситуация: есть сайт на котором есть форма для отправки данных.
Вопрос: каким образом можно реализовать автоматическое заполнение-отправку данной формы из моей программы на delphi.
Заранее спасибо


 
DiamondShark ©   (2007-12-03 16:38) [1]

Отправить на этот сайт нужным образом сформированный GET или POST http-запрос.


 
Dennis I. Komarov ©   (2007-12-04 10:02) [2]

> [0] Stranger   (01.12.07 19:05)

На сайтах обычно делают защиту от ботов, так что 99% что не получиться. (Все не так просто).


 
MetalFan ©   (2007-12-04 14:12) [3]

если нет доп защиты от ботов (ввод капчи, разгадывание загадки), то вполне реально сгенерировать такой же, как и браузер, запрос из своей программы.
в случае доп.защиты это так же возможно, но гораздо сложнее


 
Lamer666   (2007-12-05 12:38) [4]

Если на страничке при отправке данных формы нет ЗАЩИТЫ ОТ СПАМА (контрольные цифры или что то вэтом роде) то так делаешь:

1. На форму кидаешь TWEBBROWSER
2. В процедуре создания формы пишешь:
WebBrowser1.Navigate("АДРЕСС");
3. На форму конпку (при нажатии на которую будут заполняться и отправляться данные):
FillFun("имя поля","значение для имени поля",WebBrowser1); - эта функция ищет нужное поле по имени, и вводит туда твои данные
Выше указанную строчку для всех полей которые хочешь заполнить!
Например:
FillFun("_phoneNumber","",WebBrowser1);
 FillFun("_salePointCode","050500700",WebBrowser1);
 FillFun("_iNN","000013375592",WebBrowser1);
 FillFun("_contactPhone","0000015010",WebBrowser1);

И так далее.
Сама функция FillFun выглядит так:

Function FillFun (Sid:string;Svalue:string;WebBrowser1:TWebBrowser):Boolean;
 Var i,j:integer;FormItem:variant;
Begin
 Result := False;
 For I := 0 to WebBrowser1.OleObject.Document.forms.Length - 1 do
 begin
 FormItem := WebBrowser1.OleObject.Document.forms.Item(I);
 for j := 0 to FormItem.Length - 1 do
 begin
 try
   If (FormItem.Item(j).name=Sid) and (FormItem.Item(j).type="text") then
   begin
   Result:=True;
   FormItem.Item(j).Value:=Svalue;
   end;
 except
 Exit;
 end;
 end;
 end;
End;

После заполнения всех форм пишешь следующее:

For I := 0 to WebBrowser1.OleObject.Document.forms.Length - 1 do
   begin
     FormItem := WebBrowser1.OleObject.Document.forms.Item(I);
     for j := 0 to FormItem.Length - 1 do
     begin
       try
         If (FormItem.Item(j).type="submit") and (FormItem.Item(j).value="НАДПИСЬ НА КНОПКЕ") then FormItem.Item(j).click;
         //when the fieldname is found, try to fill out
       {if FormItem.Item(j).Name = FieldName then
         begin
           FormItem.Item(j).Value := Value;
           Result := True;
         end;}
       except
         Exit;
       end;
     end;
   end;

Тут мы ищем ЭЛЕМЕН типа "submit" (кнопка), надпись на которой "НАДПИСЬ НА КНОПКЕ", как только такую нашли (кнопок может быть много (хотя нет гарантии что НЕТ ДВУХ кнопок с одинаковыми надписями на них - ориентируйся по ситуации)) щелкаем нанее, тем самым отправляем данные....


 
Dennis I. Komarov ©   (2007-12-05 14:57) [5]

> [4] Lamer666   (05.12.07 12:38)

ИМХО не стоит так делать, и советы такие давать тоже!
Читать [1] до полного просветления


 
Lamer666   (2007-12-05 16:23) [6]


> ИМХО не стоит так делать, и советы такие давать тоже!
> Читать [1] до полного просветления

Пока я ВИЖУ что я ХОТЬ что то человеку ПРАКТИЧНОЕ написал в отличии от Вас, уважаемый!


 
Dennis I. Komarov ©   (2007-12-06 10:38) [7]

> [6] Lamer666   (05.12.07 16:23)

Зачем я буду писать, если в [1] уже ответили. Далее вопросов от автора не поступало.

> ХОТЬ что то человеку ПРАКТИЧНОЕ написал

Медвежья услуга! :)


 
Lamer666   (2007-12-06 11:05) [8]

Для КОГО услуга, для кого ПОМОЩЬ!


 
Dennis I. Komarov ©   (2007-12-06 14:49) [9]

> [8] Lamer666   (06.12.07 11:05)

Медвежья услуга - не помощь а вредЪ. Впрочем я с тобой спорить не собираюсь. Для того, что бы отправить Get/Post нафиг не надо грузить всю страницу, причем каждый раз заного. Нравиться - пиши как вздумается.


 
MetalFan ©   (2007-12-09 15:04) [10]


> ИМХО не стоит так делать, и советы такие давать тоже!

+1


> Для того, что бы отправить Get/Post нафиг не надо грузить
> всю страницу, причем каждый раз заного.

и тащить с собой не легкий TWebBrowser.
Алгоритм примерно такой:
1. Смотришь любым HTTP debuggerom что шлет браузер
2. с пом любого HTTP клиента/набора функций (Indy, ICS, WinInet, WinHTTP) шлешь то же самое.
3. радуешьсо


 
Lamer666   (2007-12-09 17:30) [11]


> HTTP debuggerom

дай ссылку где скачать можно


 
MetalFan ©   (2007-12-09 18:39) [12]

http://www.google.ru/search?q=http+tracer


 
MetalFan ©   (2007-12-09 19:09) [13]

хм. еле нашел бесплатный, но навороченный отладчик HTTP
http://www.fiddlertool.com/Fiddler2/version.asp


 
tButton ©   (2007-12-12 15:27) [14]


> Отправить на этот сайт нужным образом сформированный GET
> или POST http-запрос

а не подскажите как это реализовать на php?)


 
MetalFan ©   (2007-12-12 17:39) [15]

форум вообщето посвящен делфи. вот на форуме пхпшников и спроси


 
tButton ©   (2007-12-13 14:02) [16]

извините


 
Lamer666   (2007-12-13 17:55) [17]


> MetalFan

А МОЖНО ЛИ ПАРСИТЬ странички методами POST и GET?


 
Anatoly Podgoretsky ©   (2007-12-13 18:37) [18]

> Lamer666  (13.12.2007 17:55:17)  [17]

Они этим не занимаются и заниматься не могут.


 
Lamer666   (2007-12-14 08:37) [19]


> Anatoly Podgoretsky ©   (13.12.07 18:37) [18]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2009.02.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
2-1229435530
nonamez11
2008-12-16 16:52
2009.02.01
поиск в строке


2-1229781670
programmer90
2008-12-20 17:01
2009.02.01
Excel


11-1197059646
Сергей
2007-12-07 23:34
2009.02.01
Скрол для KOLGrushPanel


15-1228503636
Lamer6666
2008-12-05 22:00
2009.02.01
Delphi + Oracle


15-1228719875
pavel_guzhanov
2008-12-08 10:04
2009.02.01
Как отключить оптимизатор в Delphi7