Главная страница
    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.49 MB
Время: 0.006 c
2-1229403281
Съедобный
2008-12-16 07:54
2009.02.01
добавление записи в БД


2-1229292385
Tatb9na
2008-12-15 01:06
2009.02.01
Файлы Delphi


15-1228244724
Marser
2008-12-02 22:05
2009.02.01
Привет из Израиля!


3-1213861475
кот
2008-06-19 11:44
2009.02.01
не проходят запросы


15-1228477841
Артур Пирожков
2008-12-05 14:50
2009.02.01
Если нет Офиса, а нужно открыть Аксесовский файл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский