Curl CLI - Сохранение Cookies PLUS - PullRequest
1 голос
/ 18 мая 2011

Руководство по http://curl.haxx.se/docs/manual.html немного «быстрое», и я не понял, как это сделать.

Мне нужно сохранить все копии (и файлы cookie сессий), а затем войтина сайт через CLI.

До этого, он выглядит, он работает (сохранение и чтение):

curl -b cookies -c cookies <a href="http://www.theknot.com" rel="nofollow">http://www.theknot.com</a>

Пытался использовать NETRC (файл ".netrc"с пользователем и паролем в формате: машина curl.haxx.se логин iamdaniel пароль mysecret):

curl -n -L -b cookies -c cookies <a href="http://global.theknot.com/join/memberlogin.aspx" rel="nofollow">http://global.theknot.com/join/memberlogin.aspx</a>

Но это не волшебство:

curl -L -n -b cookies -c cookies <a href="http://www.theknot.com/wedding-dress/mon-cheri-bridals/211249?src=par" rel="nofollow">http://www.theknot.com/wedding-dress/mon-cheri-bridals/211249?src=par</a>

Поскольку он продолжает перенаправлять на страницу входа в систему ...

Кто-нибудь уже прошел через это?Спасибо.

1 Ответ

1 голос
/ 18 мая 2011

Это не тот тип логина, который вы хотите.То, что вам нужно, чтобы отправить данные поста напрямую в любой скрипт, обрабатывающий логин.Чтобы отправить данные поста конкретно:

4.2 POST Метод GET позволяет отображать все имена полей ввода в поле URL вашего браузера.Как правило, это хорошо, если вы хотите иметь возможность добавить в закладки эту страницу с данными, но это очевидный недостаток, если вы ввели секретную информацию в одно из полей или если большое количество полей создает очень длинные инечитаемый URL.Затем протокол HTTP предлагает метод POST.Таким образом, клиент отправляет данные отдельно от URL-адреса, и поэтому вы не увидите их в поле URL-адреса.Форма будет выглядеть очень похоже на предыдущую:

    <form method="POST" action="junk.cgi">
      <input type=text name="birthyear">
      <input type=submit name=press value=" OK ">
    </form>
And to use curl to post this form with the same data filled in as

раньше, мы могли бы сделать это так:

    curl --data "birthyear=1905&press=%20OK%20"       

http://www.example.com/when.cgi Этот тип POST будет использоватьContent-Type
application / x-www-form-urlencoded и является наиболее широко используемым видом POST.Данные, которые вы отправляете на сервер, ДОЛЖНЫ быть должным образом закодированы, curl не сделает этого за вас.Например, если вы хотите, чтобы данные содержали пробел, вам необходимо заменить это пространство на% 20 и т. Д. Несоблюдение этого требования, скорее всего, приведет к тому, что ваши данные будут получены неправильно и испорчены.Последние версии curl могут фактически кодировать данные POST для вас, например:

    curl --data-urlencode "name=I am Daniel" http://www.example.com

Источник: http://curl.haxx.se/docs/httpscripting.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...