Попросите WinInet обмениваться сеансами/файлами cookie с Internet Explorer

Я хочу следующее:

1) Войдите на страницу с помощью Internet Explorer

2) Пусть мое программное обеспечение, использующее WinInet API для обхода сайта, повторно использует одни и те же файлы cookie/сеанс (т. е. чтобы сканер «вошел в систему»)

Я попытался создать вход в систему самостоятельно, используя INDY, и, хотя сеансовые файлы cookie работают хорошо, многие веб-сайты в настоящее время используют более сложный механизм входа в систему, объединяя клиентские и серверные элементы для первоначального входа в систему.

...

Причина, по которой я считаю, что, например. WordPress , ASP.Net и т. д. также используют материал на стороне клиента/AJAX, а также хэш/время/коды агента пользователя/проверки и тому подобное, заключается в том, что я могу отправлять те же самые заголовки HTTP через 30 секунд из моей собственной программы-краулера, как, например. FireFox использовался при входе в систему, но он не будет работать.

(Сравните это с обычным входом в систему на основе файлов cookie сеанса, когда моя собственная программа-краулер будет входить в систему нормально.)


person Tom    schedule 19.02.2013    source источник
comment
Internet Explorer использует WinInet для внутреннего использования, поэтому он уже использует все совместно с другими приложениями на базе WinInet.   -  person Remy Lebeau    schedule 20.02.2013
comment
Я тоже на это надеялся. Но если вы войдете с помощью IE в WordPress, а затем с помощью WinInet, он больше не войдет в систему. Если то, что вы говорите, правда, я подозреваю, что причиной могут быть изменения пользовательского агента или подобное, обнаруженное WordPress?   -  person Tom    schedule 20.02.2013
comment
Вполне возможно, потому что то, что вы делаете, также может быть сделано вредоносным ПО, чтобы получить контроль над учетной записью или чем-то, к чему вы обращаетесь.   -  person Marjan Venema    schedule 20.02.2013
comment
Очевидно, WinInet обрабатывает файлы cookie для каждого процесса: stackoverflow.com/questions/443567/   -  person Jens Mühlenhoff    schedule 20.02.2013
comment
Я предполагаю, что это, по сути, убивает идею сначала попросить пользователя войти в систему с помощью Internet Explorer. Я по-прежнему открыт для предложений, хотя.   -  person Tom    schedule 20.02.2013
comment
дикая догадка: вы пытались прочитать файлы cookie через InternetGetCookie/Ex   -  person kobik    schedule 20.02.2013
comment
kobik: Но поможет ли это WordPress распознать это как один и тот же сеанс входа в систему? (Даже если я сам читаю файлы cookie с клиента и на нем, это не то же самое, что, например, WordPress читает файл cookie на клиенте как принадлежащий к тому же сеансу?)   -  person Tom    schedule 20.02.2013
comment
Я никогда не проверял это. Если бы вы могли получить ASP.NET_SessionId через InternetGetCookie/Ex, вы могли бы установить его в своем запросе WinInet через InternetSetCookie/Ex. (для файла cookie HttpOnly используйте флаг INTERNET_COOKIE_HTTPONLY). Попробуй... :)   -  person kobik    schedule 21.02.2013


Ответы (1)


Кажется, IE по умолчанию не использует «интернет-куки». В разделе Инструменты > Свойства обозревателя > Безопасность есть разные зоны. В зоне Интернет по умолчанию включен защищенный режим, и вы не можете получить доступ к этим файлам cookie с помощью Wininet API. Однако для зоны Местная интрасеть по умолчанию не включен защищенный режим, поэтому вы получаете доступ к этим файлам cookie с помощью Wininet API.

Файлы cookie защищенного режима хранятся в %appdata%\Microsoft\Windows\Cookies\Low, а файлы cookie незащищенного режима хранятся в %appdata%\Microsoft\Windows\Cookies.

Чтобы исправить ваше программное обеспечение, снимите флажок Включить защищенный режим в зоне Интернет, перезапустите IE и войдите на свой веб-сайт, чтобы снова получить файлы cookie.

person kiewic    schedule 24.02.2013
comment
Я собираюсь попробовать это позже сегодня - person Tom; 25.02.2013
comment
Похоже, это не работает с веб-сайтом WordPress, который я тестировал. Я вернусь, если найду / получу больше информации - person Tom; 04.03.2013