|
|
|
Передать в форму имя пользователя и пароль, используя MSXML2.ServerXMLHTTP методом "POST"
|
|||
|---|---|---|---|
|
#18+
Дано: Сайт с формой ввода имени пользователя и пароля, с которого требуется периодически "парсить" информацию и помещать её в некую самописную программу для ее последующей обработки (дополнения пользовательской информацией и т.п.). Пользователь вручную копировал информацию в программу через буфер обмена. Если бы форма ввода пароля отсутствовала, то задача решалалась-бы мною без проблем с использованием MSXML2.ServerXMLHTTP.6.0. и запроса методом "GET". Формы ввода пароля не предусматривает прием имени пользователя и пароля через адресную строку. Форма содержит поля <input name="login" value="" size="20"> <input type="password" name="password" size="20"> Содержание формы ввода пароля: <html> <body bgcolor="#ffffff" text="#000000" link="#003399" alink="#003399" vlink="#003399"> <table width="100%" cellpadding="2" cellspacing="2" border="0"> <tr valign="top"> <td> <table border="0" cellspacing="2" cellpadding="2"> <tr> <td> <form method="post"> <input type="hidden" name="back" value="/client/review/"> <table border="0" cellspacing="2" cellpadding="2"> <tr> <td>Имя:</td> <td> <input name="login" value="" size="20"> </td> </tr> <tr> <td>Пароль:</td> <td> <input type="password" name="password" size="20"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="Вход"> </td> </tr> </table> </form> </tr> </table> </td> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td colspan="2" width="100%" height="1" valign="top" bgcolor="#006699"></td> </tr> </table><br /><br /> </body> </html> ЗАДАЧА: передать имя пользователя и пароль запросом методом "POST": Set objSrvHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0") UID = "****" PWD = "***" objSrvHttp.setProxy 0 'параметры прокси как указано в windows objSrvHttp.setTimeouts 10000, 10000, 10000, 10000 '10 sec objSrvHttp.Open "POST", urlExec, False, UID, PWD objSrvHttp.setProxyCredentials UID, PWD objSrvHttp.setTimeouts 10000, 10000, 10000, 10000 '10 sec objSrvHttp.setRequestHeader "charset", "Windows-1251" 'это используется Post-запросом objSrvHttp.setRequestHeader "Content-Type", "text/html; charset=Windows-1251" On Error Resume Next objSrvHttp.send "login=****&password=***" '-Здесь пытаюсь передать в поля формы имя пользователя и пароль (хотя подозреваю, что это неправильно) If (200 <> objSrvHttp.Status) Then TextStream.WriteLine ("*4 HTTP Error: ") TextStream.WriteLine (" " & Trim(objSrvHttp.Status)) TextStream.WriteLine (" " & Trim(objSrvHttp.StatusText)) TextStream.WriteLine (" " & urlExec) Else On Error Resume Next strContent1 = objSrvHttp.responseText ' objSrvHttp.responseBody If (Err.Number <> 0) Then TextStream.WriteLine ("*45 HTTP Error: ") TextStream.WriteLine (" " & Trim(objSrvHttp.Status)) TextStream.WriteLine (" " & Trim(objSrvHttp.StatusText)) TextStream.WriteLine (" " & urlExec) Else TextStream.WriteLine ("Получено после отправки имени пользователя и пароля:") TextStream.WriteLine (strContent1) End If End If Ожидаю увидеть в строке strContent1 форму с нужными мне данными, как это происходит после правильного ввода имени пользователя и пароля. Результат: strContent1 содержит прежнюю форму ввода имени пользователя и пароля так, как буд-то в форму ничего не передавали. Попытка2: .... strIshodnContent = <Содержание формы из предыдущего запроса формы ввода пароля из objSrvHttp.responseText> В содержании формы заменяю тэги ввода имени пользователя и пароля на те-же тэги с заполненными параметрами value= strIshodnContent = Replace(strContent, "<input name=""login"" value="""" size=""20""></td>", "<input name=""login"" value=""**Логин**"" size=""20""></td>") strIshodnContent = Replace(strContent, "<input type=""password"" name=""password"" size=""20""></td>", "<input type=""password"" name=""password"" value=""**Пароль**"" size=""20""></td>") objSrvHttp.send strIshodnContent Результат: strContent1 содержит прежнюю форму ввода имени пользователя и пароля так, как буд-то в форму ничего не передавали. Вопрос: Как передать в форму имя пользователя и пароль, используя MSXML2.ServerXMLHTTP ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 18:12 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=22&tid=1443978]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 363ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...