Имя: Пароль:
1C
1С v8
Как с помощью обработки залогиниться на сайте (посылая данные методом post)
0 Ivan Bezdomnyi
 
24.02.12
06:36
Как с помощью обработки залогиниться на сайте (посылая данные методом post)?
Помогите плз?
1 Wobland
 
24.02.12
06:43
http=Новый HTTPСоединение("techsupp.1c.ru", , Логин, Пароль, Прокси);
не оно?
2 IamAlexy
 
24.02.12
06:45
(0) посмотри как называются поля  в форме авторизации..

затем отправь на сервер что то типа http://site_addres?имяПоляЛогин=Логин&ИмяПоляПАроль=Пароль
ну и тд.. то есть надо глянуть чо там хидденами еще в форме авторизации сидит..
3 Rie
 
24.02.12
06:50
(2) Это GET-запрос. Ему нужен POST.
4 IamAlexy
 
24.02.12
06:51
(3) я думаю, что с вероятностью близкой к ста, ему похрен.. врядли там на сайте рубится гет...
5 Rie
 
24.02.12
06:52
(4) А х.з. что у него там за сайт. Может, там вообще капча предусмотрена :-)
6 Ivan Bezdomnyi
 
24.02.12
06:54
поля называются name и pass
(2) (3) ну разработчик сайта сказал что надо именно методом post
7 Ivan Bezdomnyi
 
24.02.12
06:55
(3) а как проверить? попробовать ввести это в браузере?
8 IamAlexy
 
24.02.12
06:55
(6) разработчики сайта про метот GET знают? :)
(7) да
9 Rie
 
24.02.12
06:58
(6) Почитай документацию по HTTPСоединение. Либо как в (1), либо ОтправитьДляОбработки()
10 Ivan Bezdomnyi
 
24.02.12
07:03
(8) просто сайт открывается без авторизации
(9) да читал перечитал уже

нашел вот такую вещь:
- - -
Пишем запрос, аналогичный нашему запросу GET для передачи логина и пароля, который был рассмотрен в предыдущей главе:
POST http://www.site.ru/news.html HTTP/1.0\r\n
Host: www.site.ru\r\n
Referer: http://www.site.ru/index.html\r\n
Cookie: income=1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 35\r\n
\r\n
login=Petya%20Vasechkin&password=qq
- - -
http://www.phpclub.ru/detail/article/http_request

только как это использовать?
11 Rie
 
24.02.12
07:10
(10) Вот это:
login=Petya%20Vasechkin&password=qq
и есть твой пост-запрос.
выше - это заголовки.
Адрес сайта - в первой строке.
12 dk
 
24.02.12
07:33
13 Ivan Bezdomnyi
 
24.02.12
07:40
что-то не понимаю. я делаю так:

   ЗаголовокHTTP = Новый Соответствие();
   ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=My1cV8");

   ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI);
   
   Boundary = "My1cV8";
   
   ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
   ФайлОтправки.ЗаписатьСтроку("POST http://mmis.tomsk.ru/user HTTP/1.0" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("Host: mmis.tomsk.ru" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("Referer: http://mmis.tomsk.ru/user" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("Cookie: income=1" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("Content-Type: application/x-www-form-urlencoded" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("Content-Length: 35" + Символы.ПС + Символы.ПС);
   ФайлОтправки.ЗаписатьСтроку("login=****&password=****");
   ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
   ФайлОтправки.Закрыть();  

   Соединение = Новый HTTPСоединение("mmis.tomsk.ru", 80);
   ИмяВременногоФайлаОтвета = "D:\answ.html";
   Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "/user/", ИмяВременногоФайлаОтвета, ЗаголовокHTTP);    


а в файле ответа приходит страничка авторизации.. как надо сделать?
14 IamAlexy
 
24.02.12
07:42
(13) да попробуй им логин пароль в браузере методом гет швырнуть
15 Rie
 
24.02.12
07:43
(13) Не пиши всё в файл оправки. Туда должен попасть только
login=****&password=****
Прочее - заголовки, это другой параметр.
Ну и адрес проверь.

Или же как в (14) - вдруг сработает, и голову парить не будешь.
16 Ivan Bezdomnyi
 
24.02.12
07:54
(14) но ведь в браузере не получилось..
(12) а как в восьмерке будет называться объект, который WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
(15) написал:

   ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI);
   Boundary = "My1cV8";
   ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
   ФайлОтправки.ЗаписатьСтроку("name=****&pass=****");
   ФайлОтправки.ЗаписатьСтроку("--" + Boundary);        
   ФайлОтправки.Закрыть();  

результат тот же(
17 dk
 
24.02.12
07:58
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");

WinHttp=Новый "WinHttp.WinHttpRequest.5.1";
18 Ivan Bezdomnyi
 
24.02.12
08:08
(17) {Форма.Форма.Форма(181,16)}: Ожидается идентификатор
   WinHttp=Новый <<?>>"WinHttp.WinHttpRequest.5.1";
19 Rie
 
24.02.12
08:09
(18) Новый COMОбъект(...)
20 Ivan Bezdomnyi
 
24.02.12
08:13
(19) ага получилось.
возвращается авторизованная страничка.
а заголовки ответа как узнать?)
21 Rie
 
24.02.12
08:16
(20) GetAllResponseHeaders
22 orefkov
 
24.02.12
08:19
Вообще-то мало послать name и pass, надо еще посылать значение для submit кнопки.
Посмотри в форме для input'а с type="submit" что прописано в name="..." и value="..."

Потом в (13) смешались в кучу кони люди.

Символы.ПС + Символы.ПС - вообще не надо, два перевода строки отделяют заголовок от данных.

В файле отправки должно быть:

ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("Content-Type: application/x-www-form-urlencoded" + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("name=****&pass=****&submit=login"); // submit=login это name и value из input'а с типом submit
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
23 Ivan Bezdomnyi
 
24.02.12
08:25
> submit=login это name и value из input'а с типом submit
получается op=Войти
может op=1 нет?
24 Ivan Bezdomnyi
 
24.02.12
08:31
(22) ну в общем ни с "op=Войти" ни с "op=1" не получилось. получилось как вот тут Мож кому пригодится, как сделать POST (ну и GET) запрос с 1С на страничку

но это еще полдела)
25 orefkov
 
24.02.12
08:31
(24)
Я хз, мне на сервере в php приходит имякнопки=заголовоккнопки
И обычно сервак просто проверяет, что просто есть какое-то значение, так что может и op=1 тоже прокатит.
26 Ivan Bezdomnyi
 
24.02.12
08:39
А как с помощью этого WinHttp отправить файл? ну или Base64Строка(Новый ДвоичныеДанные(ИмяФайлаДанных))?
27 Ivan Bezdomnyi
 
24.02.12
09:21
а не. простите (26) это из другой оперы.
28 Ivan Bezdomnyi
 
24.02.12
10:14
что-то ничего не работает на самом деле. ошибся с файлом ответа когда (12) проверял(
ворачивается страничка авторизации.. должна же уже авторизованная вернуться как я понимаю?
29 Ivan Bezdomnyi
 
24.02.12
12:05
может надо както определить форму в которую нужно передавать логин пароль?
30 Ivan Bezdomnyi
 
27.02.12
11:00
php прогер говорит:
"Надо сначало получить эту страничку, разобрать на ней форму, потом только ее отправлять с логином паролем"
тт