Arhn - архитектура программирования

Чем curl отличается от wget для аутентификации

Чем curl отличается от wget? Я пытаюсь получить доступ к защищенной веб-странице через URL-адрес, используя

https://username:[email protected]

Однако это, похоже, не приводит меня прямо на страницу. Если я попробую тот же URL с wget

wget https://username:[email protected]

Я получаю ERROR 403: Forbidden. Если я попробую ту же команду с помощью curl

curl https://username:[email protected]

Запрос выполнен успешно. Что две команды делают по-разному? Я хотел бы делать все, что делает curl, но из URL-адреса браузера.

01.10.2015

  • cURL по умолчанию использует Базовую аутентификацию, я не знаю о wget. Есть ли какой-нибудь подробный флаг, который вы можете установить в wget, чтобы увидеть все заголовки? С cURL вы можете использовать -v. Если узнаете с помощью wget, сделайте то же самое и сравните запросы. 01.10.2015
  • Да, я попробовал команду verbose на curl (я только что попробовал wget --verbose, и она в значительной степени выполняет запрос, который я дал выше). Он явно не показывает мне запрос URL. Есть ли способ обойти базовую аутентификацию, используя только URL-адрес? 01.10.2015
  • Разве в браузере не появляется диалоговое окно входа в систему, если вы просто используете URL-адрес? 01.10.2015
  • Да, есть, но я хотел бы обойти это. Я пытаюсь настроить веб-перехватчик в репозитории кода, используя существующий плагин. У плагина нет возможности для аутентификации, поэтому я пытаюсь обойти его через URL-адрес. Любые предложения, помимо написания моего собственного плагина? 01.10.2015

Ответы:


1

Вы можете увидеть, какие заголовки отправляет wget, включив отладку с помощью -d.

wget -d https://username:[email protected]

Вас интересует бит между --request begin-- и --request end--. Вот пример для https://www.google.com.

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.16.3 (darwin14.3.0)
Accept: */*
Accept-Encoding: identity
Host: www.google.com
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response... 

Для curl используйте подробный флаг -v. Вы также захотите отправить содержимое из STDOUT в /dev/null.

curl -v https://username:[email protected] > /dev/null.

Вас интересуют строки с > в начале, указывающие на то, что они были отправлены curl. Опять же, вот https://www.google.com.

> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.44.0
> Accept: */*
> 

curl также предоставит вам информацию о согласовании SSL.


Одна из возможностей заключается в том, что веб-сайт решил использовать ботов с помощью своего пользовательского агента. Возможно, они заблокировали wget, но забыли curl. Попробуйте установить wget --user-agent=curl/7.44.0 https://username:[email protected] и посмотрите, получится ли у вас.

01.10.2015
  • Хорошо. Спасибо. Итак, похоже, что у curl есть дополнительный шаг Authorization: Basic d2F0NDIxOkF9ZXJ6MjAxNQ==. Есть ли способ сделать это с помощью только запроса URL? P.S. Ваш подлый флаг --user-agent не сработал. 01.10.2015
  • @inJeans Это означает, что сервер неправильно отправляет запрос HTTP-аутентификации. curl все равно отправляет ваше имя пользователя и пароль в открытом виде, используя базовую HTTP-аутентификацию. Чтобы не разглашать ваш пароль, wget будет использовать базовую аутентификацию только по запросу, даже если вы укажете имя пользователя и пароль. Попробуйте wget --auth-no-challenge. Обратите внимание, что базовая HTTP-аутентификация невероятно ненадежна и выдает ваш пароль. Сервер должен, как минимум, использовать дайджест-аутентификацию. 01.10.2015
  • Кажется, это сработало. Я должен упомянуть, что моя конечная цель - сделать это в URL-адресе браузера, поэтому я хотел бы избежать решения проблемы с помощью команд wget, если это возможно :-) 01.10.2015
  • @inJeans Ваш браузер, вероятно, также отказывается использовать базовую HTTP-аутентификацию. 01.10.2015
  • Я так понимаю, надо просто с этим смириться? 01.10.2015
  • @inJeans Если у вас есть сила, почините сервер или, по крайней мере, сообщите им, что они отправляют пароли в открытом виде. В противном случае вы можете настроить браузер. Какой браузер? 01.10.2015
  • Прохладный. Спасибо @Schwern. Возможно, я смогу связаться с сисадмином. Я не обязательно хочу настраивать свой браузер, поскольку я просто пытаюсь взломать плагин веб-перехватчика для тайника. 01.10.2015
  • @inJeans Я внесу поправку в то, что я сказал о паролях, отправляемых в открытом виде. HTTPS шифрует заголовки HTTP, включая базовый заголовок аутентификации. Так что по крайней мере пароль не может быть перехвачен. Они все равно должны использовать дайджест-аутентификацию. 01.10.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..