как заполнить "форму" в интернете

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

как заполнить "форму" в интернете

Сообщение v-adix » 27.01.2004 (Вт) 16:39

всем привет!
вопрос такой. в сети часто бывают анкеты для заполнения, например при регистрации. можно ли как нибудь программно заполнить нужные поля и послать данные серверу?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2004 (Вт) 17:56

Да, можно.
Открой в IE исходник HTML и в коде формы будет примерно это:

<form action=/log.php method=POST name=chat>
<input type=text name=msg>
<input type=submit value="Отправить">
</form>

Код: Выделить всё
<form action=/log.php method=POST name=chat>

Этот код говорит IE о том, что при нажатии кнопки вызывается скрипт "log.php"
Код: Выделить всё
<input type=text name=msg>

Этот код отвечает за создание TextBox с именем msg
Код: Выделить всё
<input type=submit value="Отправить">

А этот - за создание кнопки "Отправить"

Можно нажать кнопку вручную, а можно ввести в окне браузера команду самому:

Код: Выделить всё
http://www.mysite.net/log.php?msg=Текст, который Вы набрали в поле с именем msg


Т.о., Вы должны проанализировать HTML код страницы, а потом сформировать команду из этих данных

P.S. Если отправляются данные из нескольких полей, то синтаксис такой:
Код: Выделить всё
http://www.mysite.net/log.php?msg1=Text1&msg2=Text2&msg3=Text3

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 27.01.2004 (Вт) 19:44

я раскрыл код страницы, нашёл name=phone , name=last_name и т.д. вобщем, набираю: www.adaasd.com/cgi-bin/xxxxx.cgi?phone= ... e=asdasdad . открывается страница Internal Server Error. это что сервер запрещает мне использовать ихний скрипт таким образом?

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 27.01.2004 (Вт) 19:48

да кстати когда я кликаю по Submit в поле адреса не пишется www.asdasdasd.com/xxx.cgi?asds=wewe и т.д. просто пишется www.xxxxx.com/cgi-bin/xxxx.cgi ...
и ещё: где в html коде найти "событие" кликания по кнопке Submit? или этого там нет?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2004 (Вт) 19:53

Не знаю :(

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 11:45

Товарищ Amed не пудрите мозги товарищу V-Adixу. Таким методом как вы описали передаются параметры только методом GET формы IE, и во внутренних скриптах PHP. А IE передать нормально методом POST не может данные, можно просто симулировать физическое заполнение и клик по кнопке, но оно очень медленно, потому как ждет загрузки картинок как и браузер. А чтобы нормально и бысто передавать данные на сервер надо юзать объект WinHTTP или MSXML.HTTPRequest, тогда все будет ОК! Но с ними тяжело разбираться. У меня сейчас есть готовый проект авторассыльшика на доски объявлений, написанный мною, и регистраор в каталогах и поисковиках, но это комерческий проект, а вот первые мои потуги можно скачать свободно с сайта www.specforce-vb6.by.ru, там как раз и применяются эти объекты на базовом уровне, вообщем по ним можно разобраться как это все происходит.
Если руки кривые, то не надо ругать разработчиков.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 28.01.2004 (Ср) 11:56

2v-adix
Да, в поле адреса писаться и не должно, это нормально...
Событие кликанья описывается косвенно:
Код: Выделить всё
<form action=/log.php method=POST name=chat>

То есть, кликая 'Submit', мы отправляем форму...

2XRaptor
Дело в том, что у меня все скрипты, которые я так писал, преотличнейше работали :?, поэтому я так уверен :wink:

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 28.01.2004 (Ср) 12:29

2 Xraptor
я не нашёл у тебя на сайте то что ты говоришь! плз дай полную ссылку!

2 All
Но ведь IE както вызывает форму с сервера! открывается, например register.html, в котором вся форма. потом както вызывается xxxx.cgi, и IE посылает данные (какбы параметры функции в Visual Basic) скрипту. так вот мне надо узнать как он посылает данные!
мне не надо втягиваться в подробности как это делать. может есть контрол (типа BrowserControl), в котором я могу открыть форму регистрации и программно нажать на Submit?

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 12:54

Конечно IE вызывает форму с сервера и постит ее, но вот во время постинга такие маленькие строчки как 'application/x-www-form-urlencoded' и 'multipart/form-data' сводят на нет всю мощь басика. Потому как не может он постить формы без использования ActiveX контролов.

V-Adix:
Вышлю тебе сейчас на мыло архив, на сайте у меня действительно кода нет, ссылка осталась а файл удален, даже не помню когда убрал.
Если руки кривые, то не надо ругать разработчиков.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 13:16

Сорри! Тут у меня инет заглючил или форум, я так и не понял, хотел выложить сдесь файл, но подвис. Выложил на сайт по старой ссылке:
http://specforce-vb6.by.ru/Soft/FreeBoards.zip

Прога называется FreeBoards, правда не было времени посмотреть что там за версия, что нашел на харде то и выложил, но код использования WinHTTP и MSXML там есть, остальное может не совсем работать, так что не копайтесь, а то там такой кавардак пока без комменариев код. Это я потом комментарии добавляю уже на финальной стадии.
Если руки кривые, то не надо ругать разработчиков.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 28.01.2004 (Ср) 14:10

да кстати через Internet Controls можно программно нажать на Submit?

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 14:41

Можно конечно! Да и через IE можно.
Если руки кривые, то не надо ругать разработчиков.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 28.01.2004 (Ср) 15:10

и как? это одна из моих основных целей

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 15:41

Елы-Палы! Я наверное уже на этом форуме раз в десятый привожу код работы с HTML Object Library. Разницы в методах и свойствах между IE и WebBrowser нет ни какой, просто IE запускается отдельным траблом, а WebBrowser встроен на форму.

Dim PForm As Variant
Dim PCntrl As Variant

For Each PForm In Me.WebBrowser1.Document.Forms
For Each PCntrl In PForm.all.Tags("INPUT")
If PCntrl.Type="submit" and PCntrl.Value="Отправить" then
PCntrl.Click
End If
Next
Next
Если руки кривые, то не надо ругать разработчиков.

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 28.01.2004 (Ср) 15:50

Но еще раз повторюсь, что эмуляция нажатия клавиш - это маздай! WinHTTP - это РУЛЕЗ!!!!!! Потому как если ты в WebBrowser типа асинхронного коннекта отображать попытаешься, то засыпешься на количестве того кода который придется написать. А загружать каждый раз всю страницу целиком и потом заполнять поля перебором, а потом отправляь и ждать пока загрузится ответ от сервера - это полный ан.с. Я когда в молодости написал так, то был конечно очень рад, но 20 объяв на доски у меня уходило за 15 минут иногда быстрее, а потом когда юзал WinHTTP, то за 15 минут у меня 2000-3000 объяв уходило. Вот так то!
Если руки кривые, то не надо ругать разработчиков.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 28.01.2004 (Ср) 20:59

у меня всё получилось. передаю все параметры через xxxx.cgi?sfsdf=sdfsdf. проблема была в сервере! а насчёт WinHTTP я поищу в инете. может пригодится потом...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.01.2004 (Чт) 9:37

Ну вот, хорошо что я был прав :D
А то уже немного сомневаться начал :(

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 29.01.2004 (Чт) 17:27

Конечно получилось, но повторюсь, что такие данные примет только скрипт который отстроен принимать данные по методу RequestForm или RequestHeader, а если сервак ждет от страницы байтовый массив, то такой метод не прокатит, потому как данные передаются в отдельном HTTP соединении а не в заголовке. Читайте основы HTML господа.
Если руки кривые, то не надо ругать разработчиков.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 30.01.2004 (Пт) 12:13

где нибудь есть инфа об этом WinHTTP?

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 30.01.2004 (Пт) 13:43

Конечно есть! На сайте MSDN. Microsoft Windows UPDATE можно скачать MSXML Core Tools куда входит и WinHTTP последней версии.
Если руки кривые, то не надо ругать разработчиков.

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 30.01.2004 (Пт) 18:45

всё скачал msxml 5.0. на msdn нашёл всё кроме как подключить WinHTTP к проекту !

XPraptor
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 02.12.2003 (Вт) 18:13
Откуда: Minsk

Сообщение XPraptor » 30.01.2004 (Пт) 19:03

Когда инсталишь, то выбирай Manual а не автомат. Отмечай все доступные компоненты. В басике в референсах появится галка WinHTTP Object.
Если руки кривые, то не надо ругать разработчиков.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 20

    TopList