Корпоративный веб-сайт, к которому я часто обращаюсь, использует базовую аутентификацию, которая запускает диалог пользователя/пароля. Мой менеджер паролей (LastPass) не может его заполнить. Итак, я хочу использовать пользовательский скрипт для ввода формы входа, которую может заполнить LastPass.
Чтобы протестировать внедренную функцию формы onsubmit
, в веб-консоли Firefox я запустил:
var request = new XMLHttpRequest();
request.open("GET", "https://someweb.com/login.do", false);
request.setRequestHeader("Authorization", "Basic " + btoa(USERNAME + ":" + PASSWORD));
request.setRequestHeader("User-Agent", navigator.userAgent);
request.setRequestHeader("Cookie", "JSESSIONID=*****");
request.send();
USERNAME
и PASSWORD
будут извлечены из заполненной формы.
Все работает так, как ожидалось, за исключением того, что мне нужно получить файл cookie сеанса JSESSIONID
. Файл cookie отправляется с главной домашней страницы перед тем, как перейти к якорю входа, и я могу получить его в Firefox из Инспектора хранилища или просмотрев заголовки запросов на вкладке «Сеть» в инструментах разработчика. Поскольку инспектор хранилища помечает этот файл cookie как HttpOnly
, я не могу получить его с помощью document.cookie
.
Тривиальный
curl -I 'https://someweb.com/home.do'
выводит файл cookie JSESSIONID
, поэтому я попытался получить домашнюю страницу, выпустив файл cookie:
var request = new XMLHttpRequest();
request.open("GET", "https://someweb.com/login.do/home.do", false);
request.send();
request.getAllResponseHeaders();
но файл cookie все еще не отображается.
Я пробовал использовать GM_xmlHttpRequest
с различными менеджерами пользовательских скриптов и получать responseHeaders
из объекта Response
, но файла cookie JSSESSIONID
там не было.
Я знаю, что HttpOnly
файлы cookie не подвергаются воздействию JavaScript, чтобы избежать внедрения вредоносных скриптов. Однако это не должно быть так для пользовательских скриптов, которые запускаются расширениями (поэтому браузер им доверяет), и должен быть способ заполнить мои учетные данные без ручного копирования и вставки.