Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
2-1229427507
charoey_mag
2008-12-16 14:38
2009.02.01
Чтение в record


11-1197054692
Vinum
2007-12-07 22:11
2009.02.01
Как в перемен. типа PGif загрузить из перемен. типа TStringStream


6-1196525147
Stranger
2007-12-01 19:05
2009.02.01
Автоматическая отправка данных форм


15-1228730968
aston2204
2008-12-08 13:09
2009.02.01
Определить СУБД по файлу БД


2-1229506635
abhtr
2008-12-17 12:37
2009.02.01
Проблема с rchForReport: TRichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский