Имя: Пароль:
1C
1С v8
Программно залогиниться на сайте.
0 unknown181538
 
24.11.12
05:14
Пытаюсь залогиниться. Код украл, т.к. тупой одинесник, и ничего не понимаю в веб делах.
Сайт = Новый COMОбъект("InternetExplorer.Application");
   Сайт.Visible = Ложь;
   Состояние("Подключение к ...");
   Сайт.Navigate("http://fx-trend.com/login");
   Сайт.Document.Forms(0).elements("myloginbox").Value="****";

Сайт.Document.Forms отображается в отладчике как COMОбъект,
а Сайт.Document.Forms(0) уже выдает ошибку.
1 Wobland
 
24.11.12
07:13
как давно я не получал свежих новостей! спасибо
2 unknown181538
 
24.11.12
07:43
(1) Чего?
3 YHVVH
 
24.11.12
07:57
(2) ты тупой одинесник, и ничего не понимаешь в веб делах.
4 unknown181538
 
24.11.12
08:19
(3) Ты такой же тупой как я, что не можешь сказать ничего по существу?
5 YHVVH
 
24.11.12
10:02
сообщить(Сайт.Document.forms.Item(2).elements(0).Name);
сообщить(Сайт.Document.forms.Item(2).elements(0).Value);
сообщить(Сайт.Document.forms.Item(2).elements(1).Name);
сообщить(Сайт.Document.forms.Item(2).elements(1).Value);
6 unknown181538
 
24.11.12
17:32
(5) ок
Теперь пытаюсь установить значение:
Сайт.Document.forms.Item(2).elements(0).Value = "Unknown181538";
получаю ошибку при получении атрибута контекста (Docemunt)
7 Jump
 
24.11.12
18:45
(0)А как ты вообще себе это представляешь - "залогинится" ?
Не так то просто все.
8 unknown181538
 
24.11.12
18:57
(7) ОК. А как тогда следует подключаться к сайту с авторизацией, чтобы стянуть с него страницу. Вроде тут были примеры, где люди делали что-то подобное таким образом.
9 Jump
 
24.11.12
19:36
(8)Очень зависит  от того какая там авторизация. Стопроцентно универсального совета нет.
Как правило кукисы в большинстве случаев. А ты с кукисами насколько видно из (0)даже не пытался работать.
10 unknown181538
 
24.11.12
20:23
(9) От блин, боюсь придется кого-то привлечь... А че-нить почитать по теме посоветуешь?
11 unknown181538
 
24.11.12
23:57
Типа up... вдруг еще кто что скажет.
12 zladenuw
 
25.11.12
03:42
а  так ?
Док = ЭлементыФормы.ПолеHTMLДокумента1.Документ;
   Попытка
       Form1 = Док.forms["Form1"].document;
       Form1.GetElementById("Utente").value = Логин;;
       Form1.GetElementById("Passw").value = Пароль;
       Исключение
   
   КонецПопытки;
13 unknown181538
 
25.11.12
04:20
(12) Поле объекта не обнаружено Fom1.

На другом форуме спец по вебу немного мне помог, глянул, что в сниффере на сервер отправляется:
"Request POST //login//my/profile/info/ HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Referer https://fx-trend.com//login//myaccount
Accept-Language en-US
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type application/x-www-form-urlencoded
Accept-Encoding gzip, deflate
Host fx-trend.com
Content-Length 25
Connection Keep-Alive
Cache-Control no-cache
Cookie PHPSESSID=60m7rjl9bedbuu8eg5403lbfb5; lang=ru; branch=1; __utma=219800142.1893725394.1353796129.1353796129.1353796129.1; __utmb=219800142.4.10.1353796129; __utmc=219800142; __utmz=219800142.1353796129.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

login=jjjjjjjjjj&pass=jjjjjjjjjjjj"

Сейчас код в состоянии:
ХТТП = Новый HTTPСоединение("fx-trend.com",,"Unknown181538","gr181538GR");
СоотвЗаголовки = Новый Соответствие;
СоотвЗаголовки.Вставить("login","Unknown181538");
СоотвЗаголовки.Вставить("pass","****");
ХТТП.Получить("Request POST //login//my/profile/info/ HTTP/1.1
|Accept text/html, application/xhtml+xml, */*
|Referer https://fx-trend.com//login//myaccount
|Accept-Language en-US
|User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
|Content-Type application/x-www-form-urlencoded
|Accept-Encoding gzip, deflate
|Host fx-trend.com
|Content-Length 25
|Connection Keep-Alive
|Cache-Control no-cache
|Cookie PHPSESSID=60m7rjl9bedbuu8eg5403lbfb5; lang=ru; branch=1; __utma=219800142.1893725394.1353796129.1353796129.1353796129.1; __utmb=219800142.4.10.1353796129; __utmc=219800142; __utmz=219800142.1353796129.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
|","C:\temp\12389.html");  // |"


Но возвращает опять страницу, как будто я не авторизовался.
Не понимаю, куда логин/пароль пихать - то ли как есть оставить, то ли в заголовки. При этом в СП написано, в третий параметр(заголовки) передается строка, а все пишут, что передают соответствие.
14 unknown181538
 
25.11.12
04:21
(13) блин... ну спалил пароль) не надо пытаться ничего украсть, все равно не получится:)
15 ЧеловекДуши
 
25.11.12
07:52
(14)Да кому ты нужен...

Интересно, а сайт то в Швеции :)
16 Мизантроп
 
25.11.12
08:31
(15)
> Интересно, а сайт то в Швеции :)

что в этом интересного?
17 unknown181538
 
25.11.12
10:55
(15) там 1,5 куска баксов)
18 Wobland
 
25.11.12
10:58
(17) пароль уже сменил или старый подходит ещё?
19 Wobland
 
25.11.12
11:04
баланс 15.81.. да кому ты нужен ;)
20 unknown181538
 
25.11.12
11:36
(19) это свободные - остальное инвестировано)

ХТТП = Новый HTTPСоединение("fx-trend.com",,"Unknown181538","gr181538GR",,Истина);

ТекстИсточника = "Request POST //login//my/profile/info/ HTTP/1.1
|Accept text/html, application/xhtml+xml, */*
|Referer https://fx-trend.com//login//myaccount
|Accept-Language en-US
|User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
|Content-Type application/x-www-form-urlencoded
|Accept-Encoding gzip, deflate
|Host fx-trend.com
|Content-Length 25
|Connection Keep-Alive
|Cache-Control no-cache
|Cookie PHPSESSID=60m7rjl9bedbuu8eg5403lbfb5; lang=ru; branch=1; __utma=219800142.1893725394.1353796129.1353796129.1353796129.1; __utmb=219800142.4.10.1353796129; __utmc=219800142; __utmz=219800142.1353796129.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
|
|login=Unknown181538&pass=gr181538GR";
ТекстД = Новый ТекстовыйДокумент;
ТекстД.ДобавитьСтроку(ТекстИсточника);
ТекстД.Записать("C:\temp\fxt.html");

ХТТП.ОтправитьДляОбработки("C:\temp\fxt.html","https://fx-trend.com/login/","C:\temp\fxt_output.html");  // |"
ХТТП.Получить("http://fx-trend.com/my/pamm_investor/accounts/details/12557","C:\temp\result.html");

Сейчас вот так... но все равно ничего не получается. Это нормально, что "C:\temp\fxt_output.html" пустой? Говорят, куки надо как-то отправлять при каждом обращении. О чем речь?
21 unknown181538
 
25.11.12
11:38
(19) Кстати, памм счета - хороший инструмент инвестирования - присоединяйтесь:)
22 Infsams654
 
25.11.12
11:42
(0) а нафига тебе COMОбъект("InternetExplorer.Application") ?
Работай сразу по HTTPСоединение или через com для http
23 unknown181538
 
25.11.12
11:44
(22) Читай ниже. Переделал уже...
24 Infsams654
 
25.11.12
11:51
(23) берешь из ответа "Cookie" и делай что хочешь
25 Jump
 
25.11.12
15:49
(20)"Говорят, куки надо как-то отправлять при каждом обращении. О чем речь?" - Все просто.

Как работает веб сервер знаешь? Работает он по принципу вопрос- ответ. Т.е ты подключился, он тебе страницу отдал, и забыл про тебя.

Если ты авторизировался, то он отдал тебе страничку, с фразой, что ты авторизировался, и снова забыл про тебя.
Опять к нему подключишься, он опять будет тебя считать неавторизированным пользователем.

Но если в твоем запросе к серверу будет кукис, подтверждающий то, что ты авторизировался, тогда он будет считать тебя авторизированным пользователем.
26 unknown181538
 
25.11.12
19:58
Ответ должен приходить в файл, который указан третим параметром процедуры ОтправитьДляОбработки() ?
27 unknown181538
 
25.11.12
20:02
Не, ну на мисте должен был обязательно найтись какой-нибудь дебил! Очень смешно!
28 unknown181538
 
25.11.12
20:05
1Cники, наверное, и в лифтах писают, и лампочки бьют.
29 oleg_km
 
25.11.12
20:16
Вот это:

ХТТП.Получить("http://fx-trend.com/my/pamm_investor/accounts/details/12557"

Должно быть так:

ХТТП.Получить("my/pamm_investor/accounts/details/12557"
30 unknown181538
 
25.11.12
20:25
(29) теперь вообще ничего не возвращает. Но это скорее всего из-за того, что с кукисами я так и не разобрался.
31 oleg_km
 
25.11.12
20:32
(30) Кукисы здесь не при чем. Кукисы браузер обрабатывает прозрачно для пользователя. Выложи лог снифера, лучше из-под фидлера (чтобы был только http)
32 unknown181538
 
25.11.12
21:04
(31) Объясните мне, в каком окне этого филдера эти логи смотреть? Он меня пугает что-то.
33 unknown181538
 
25.11.12
21:05
(31) Выложить лог от ручной авторизации, или лог моего кода?
34 oleg_km
 
25.11.12
21:34
(33) вообще всей сессии
35 unknown181538
 
25.11.12
22:26
(34) Не понимаю я, где нужный лог смотреть. У меня как раз fiddler 2
36 FN
 
25.11.12
22:52
Сайт = Новый COMОбъект("InternetExplorer.Application");
   Сайт.Visible = Ложь;
   Состояние("Подключение к ...");
   Сайт.Navigate("http://fx-trend.com/login");
Пока (Сайт.readyState<4) или (Сайт.Busy=-1) Цикл
Состояние("Идет загрузка");
КонецЦикла

Сайт.Document.GetElementById("login").value = Логин;;
       Сайт.Document.GetElementById("pass").value = Пароль;
Сайт.Submit();
Пока (Сайт.readyState<4) или (Сайт.Busy=-1) Цикл
Состояние("Идет загрузка");
КонецЦикла

теперь ты авторизирован
37 unknown181538
 
25.11.12
23:08
(36) ох ты блин же.. кто-то говорит, через НТТПСоединение надо, кто-то опять ие рисует. А мне кажется, что видел я этот код.
38 unknown181538
 
25.11.12
23:19
(36) Сайт.Document.GetElementById("login") возвращает null
39 FN
 
25.11.12
23:20
(38) упс... сейчас поправим
40 unknown181538
 
25.11.12
23:21
(39) а (5),(6)смотрели? через ие тож что-то не получилось.
41 FN
 
25.11.12
23:27
IE.Document.Forms(1).elements("login").Value=Логин
IE.Document.Forms(1).elements("pass").Value=Пароль
42 FN
 
25.11.12
23:28
или
IE.Document.Forms(2).elements("login").Value=Логин
IE.Document.Forms(2).elements("pass").Value=Пароль

там на страничке две формы (слева и по центру)
43 FN
 
25.11.12
23:56
на всякий случай разжую:

Сайт.Document.Forms(2).elements("login").Value="Unknown181538";
   Сайт.Document.Forms(2).elements("pass").Value="gr181538GR";
   Сайт.Document.Forms(2).Submit();

Пока (Сайт.readyState<4) или (Сайт.Busy=-1) Цикл
Состояние("Идет загрузка");
КонецЦикла

Теперь можешь лазить по страничкам уже авторизированным.


ЗЫ если использовать АктивИкс на форме вместо СОМ-ИЕ - будет гораздо удобнее.
44 unknown181538
 
26.11.12
01:16
Сайт = Новый COMОбъект("InternetExplorer.Application");
   Сайт.Visible = Ложь;
   Состояние("Подключение к ...");
   Сайт.Navigate("http://fx-trend.com/login");
     Пока (Сайт.readyState<4) или (Сайт.Busy=-1) Цикл
Состояние("Идет загрузка");
КонецЦикла;

Сайт.Document.Forms(2).elements("login").Value="Unknown181538";
   Сайт.Document.Forms(2).elements("pass").Value="***";
   Сайт.Document.Forms(2).Submit();

Пока (Сайт.readyState<4) или (Сайт.Busy=-1) Цикл
Состояние("Идет загрузка");
КонецЦикла;



Метод объекта не обнаружен forms)
45 Dethmont
 
26.11.12
02:36
Сайт.Document.login_form.elements(0).value
46 Dethmont
 
26.11.12
02:43
Сайт.Document.login_form.elements(0).Value = "login"
Сайт.Document.login_form.elements(1).Value = "pass"
47 Dethmont
 
26.11.12
02:52
Блин уже пароль сменил, я только хотел посмотреть что там есть =(
48 unknown181538
 
26.11.12
02:58
(47) я б не против, чтоб ты посмотрел) но нашелся придурок, который потер мои паспортные данные, изменил личную информацию, и сменил пароль. Мне очень жаль осознавать, что это был 1с-ник, вполне вероятно с высшим образованием и возрастом за 20. Наверное, он писает в лифте, и подкладывает своим бухгалтершам жевачки на стул.
На этом сайте я инвестирую в PAMM счета. Что-то вроде доверительного управления с доходностью свыше 50% в год. Если интересно, могу рассказать.
49 unknown181538
 
26.11.12
03:23
(46) вот это странно.. один раз вроде сработало, а на другой - уже нет...
50 unknown181538
 
26.11.12
04:27
Да, если кто возьмется решить проблему за умеренное вознаграждение озвучьте ценник :)
51 alexhtn
 
26.11.12
12:18
Когда-то делал бота для игры. Может поможет.

       ПерейтиНаСтраницу("about:blank");
       ПерейтиНаСтраницу(Мир.УРЛ_Игры);
       Если Найти(ЭлементыФормы.ПолеHTML.Документ.Body.innerText, Мир.ТекстЛогин) = 0 Тогда
       Иначе
           ЭлементыФормы.ПолеHTML.Документ.all.user.value = Мир.Логин;
           ЭлементыФормы.ПолеHTML.Документ.all.password.value = Мир.Пароль;
           Для т = 1 По ЭлементыФормы.ПолеHTML.Документ.links.length Цикл
               Если ЭлементыФормы.ПолеHTML.Документ.links.item(т).className = "login_button" Тогда
                   ЭлементыФормы.ПолеHTML.Документ.links.item(т).Click();
                   Прервать;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
       глПауза(1000);    
       Для т = 1 По ЭлементыФормы.ПолеHTML.Документ.links.length Цикл
           Если ЭлементыФормы.ПолеHTML.Документ.links.item(т).innerText = Мир.ИмяКнопки Тогда
               ЭлементыФормы.ПолеHTML.Документ.links.item(т).Click();
               Прервать;
           КонецЕсли;
       КонецЦикла;
       ОжиданиеЗагрузки(Мир.УРЛ);
52 FN
 
26.11.12
12:29
(50) код из (43) у меня отлично отрабатывает (в смысле ругается на "Пользователь с данным логином и паролем в нашей системе не зарегистрирован", что в принципе логично)
Пересмотри внимательно свой код.
53 Vladal
 
26.11.12
12:32
(10) Почитать по теме - Стас Михайлов "Системное программирование в 1С:Прелприятии 7.7 и 8.0"
54 unknown181538
 
26.11.12
14:21
(53) а мысль неплохая. Что-то я про него не подумал сразу.
55 Vladal
 
26.11.12
15:40
(54) Там в первой-второй главе разбирается работа с браузеро (IE), вход на форум и т.д.
56 Jump
 
27.11.12
07:36
(54)При таком способе у тебя будет открываться браузер, и страничка в нем. Если это не мешает, то вполне вариант.

Хотя красивее взять готовую библиотеку для работы с вебом, из какого - нибудь языка, и работать с ней.
57 unknown181538
 
27.11.12
13:27
(56) Мне прислали скрипт на питоне. Возможно его использую, но в нем еще надо разобраться, и разобраться, как прикрутить...