Ответы с форумов MSDN

Работа с cookies в WinHttp

Date: 19.11.2018 18:13:25

WinHttp поддерживает автоматическую обработку Cookies во всех версиях (https://docs.microsoft.com/en-us/windows/desktop/winhttp/cookie-handling-in-winhttp). Вам нужно просто выполнять запросы так же, как браузер это делает. Не сразу ломится авторизоваться, а сначала загрузить какую-либо страницу, при загрузке которой сервер отдает Cookie. Ну и замаскироваться под обычный браузер (User-Agent и все такое), так как сервер может быть настроен, чтобы роботам Cookie не отдавать.


Message 341

Date: 21.11.2018 3:13:54

Только что попробовал через curl отправить запрос без всяких дополнительных заголовков, вроде выдает (хотя эта страница возвращает 302 редирект):

C:\Distr\curl-7.62.0-win32-mingw\curl-7.62.0-win32-mingw\bin>curl --verbose http://www.news.krasnoyarsk.ru/client/review/
*   Trying 80.91.193.81...
* TCP_NODELAY set
* Connected to www.news.krasnoyarsk.ru (80.91.193.81) port 80 (#0)
> GET /client/review/ HTTP/1.1
> Host: www.news.krasnoyarsk.ru
> User-Agent: curl/7.62.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Wed, 21 Nov 2018 03:04:14 GMT
< Server: Apache/2.2.34 (Unix) PHP/4.4.9 mod_ssl/2.2.34 OpenSSL/1.0.2o
< X-Powered-By: PHP/4.4.9
< Set-Cookie: PHPSESSID=c57c4351e1969e18044050465e7181e6; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Location: /client/login/?back=%2Fclient%2Freview%2F
< Content-Length: 0
< Content-Type: text/html; charset=windows-1251
<
* Connection #0 to host www.news.krasnoyarsk.ru left intact

Возможно, у вас это банальная проблема кэширования или тот же Fidller глючит.

Я так понимаю, это VBScript? У меня вот так работает, если сразу запрашивать нужную страницу, без редиректа:

urlExec ="http://www.news.krasnoyarsk.ru/client/login/?back=%2Fclient%2Freview%2F" 
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 
objWinHttp.SetTimeouts 59000, 59000, 59000, 59000
objWinHttp.Open "GET", urlExec, False

objWinHttp.SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
objWinHttp.SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
objWinHttp.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
objWinHttp.SetRequestHeader "Accept-Encoding", "gzip, deflate, sdch"

On Error Resume Next
objWinHttp.Send ""
objWinHttp.WaitForResponse
MsgBox(objWinHttp.getAllResponseHeaders)

' Результат:
'
'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
'Connection: Keep-Alive
'Date: Wed, 21 Nov 2018 03:36:13 GMT
'Keep-Alive: timeout=5, max=100
'Pragma: no-cache
'Content-Length: 2225
'Content-Type: text/html; charset=windows-1251
'Expires: Thu, 19 Nov 1981 08:52:00 GMT
'Server: Apache/2.2.34 (Unix) PHP/4.4.9 mod_ssl/2.2.34 OpenSSL/1.0.2o
'Set-Cookie: PHPSESSID=5341e0c36539450ef5ecc93c534d9caf; path=/
'X-Powered-By: PHP/4.4.9


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub