Ответ 1
Используйте параметр --cookie-jar
или --dump-header
для сохранения полученных файлов cookie в файл. Параметр --cookie
может читать файлы cookie из этого файла позже.
-b, --cookie < имя = данные >
(HTTP) Передайте данные на HTTP-сервер в виде файла cookie. Предполагается, что это данные, ранее полученные с сервера в строке "Set-Cookie:". Данные должны быть в формате "NAME1 = VALUE1; NAME2 = VALUE2".
Если в строке не используется символ '=', он рассматривается как имя файла для чтения ранее сохраненных строк cookie от, которые должны использоваться в этом сеансе, если они совпадают. Использование этого метода также активирует движок cookie, который также сделает зависание входящих файлов cookie, что может быть удобно, если вы используете это в сочетании с опцией -L, --location. Формат файла для чтения файлов cookie должен быть простым заголовком HTTP (стиль Set-Cookie) или файлом файла cookie Netscape/Mozilla.
Файл, указанный с помощью -b, --cookie, используется только как вход. Файлы cookie не будут записаны в файл. Чтобы сохранить файлы cookie, используйте параметр -c, --cookie-jar.
Соблюдайте осторожность, если вы используете эту опцию, и может произойти несколько переводов. Если вы используете NAME1 = VALUE1; формате или в файле, используйте формат Set-Cookie и не указывайте домен, тогда cookie отправляется для любого домена (даже после переадресации) и не может быть изменен файлом cookie на сервере. Если движок cookie включен и сервер устанавливает одноименный файл cookie, то оба будут отправлены на будущую передачу на этот сервер, скорее всего, не то, что вы намеревались. Чтобы устранить эти проблемы, установите домен в Set-Cookie (это будет включать поддомены) или используйте формат Netscape.
Если этот параметр используется несколько раз, последний будет использоваться.
-c, --cookie-jar < имя файлa >
(HTTP) Укажите, к какому файлу вы хотите закричать, чтобы записать все файлы cookie после завершения операции. Curl записывает все файлы cookie, ранее прочитанные из указанного файла, а также все файлы cookie, полученные с удаленного сервера (ов). Если cookies не известны, данные не будут записаны. Файл будет записан с использованием формата файла cookie Netscape. Если вы укажете имя файла на одну тире, "-", файлы cookie будут записаны в стандартный вывод.
Этот параметр командной строки активирует движок cookie, который создает завиток и использует файлы cookie. Другой способ активировать его - использовать параметр -b, --cookie.
Если кусок файла cookie не может быть создан или записан, операция полного зависания не выйдет из строя или даже не сообщит об ошибке. Использование -v будет отображать предупреждение, но это единственная видимая обратная связь, которую вы получаете об этой, возможно, смертельной ситуации.
Поскольку файлы cookie 7.43.0, импортированные в формате Set-Cookie без имени домена, не экспортируются с помощью этой опции.
Если эта опция используется несколько раз, будет использоваться последнее указанное имя файла.
-D, --dump-header <file>
Записать заголовки протокола в указанный файл.
Этот параметр удобен для использования, когда вы хотите сохранить заголовки, которые HTTP-сайт отправляет вам. Куки файлы из заголовков затем могут быть прочитаны во втором вызове curl, используя опцию -b, --cookie! Опция -c, --cookie-jar - лучший способ хранения файлов cookie.
При использовании в FTP линии ответа сервера FTP считаются "заголовками" и, таким образом, сохраняются там.
Если этот параметр используется несколько раз, последний будет использоваться
В качестве альтернативы вместо использования командной строки cURL app напишите код, который использует библиотека libCurl. Это даст вам более прямой контроль над обработкой файлов cookie. libCurl имеет несколько функций, связанных с HTTP файлами cookie:
Параметры curl_easy_getinfo()
:
- CURLINFO_COOKIELIST - получить все известные файлы cookie
Параметры curl_easy_setopt()
:
-
CURLOPT_COOKIE - установить содержимое заголовка HTTP Cookie
-
CURLOPT_COOKIEFILE - имя файла для чтения файлов cookie из
-
CURLOPT_COOKIEJAR - имя файла для хранения файлов cookie для
-
CURLOPT_COOKIESESSION - запустите новый сеанс cookie
-
CURLOPT_COOKIELIST- добавлять или обрабатывать файлы cookie, хранящиеся в памяти
Затем вы можете сохранить файлы cookie, как хотите, и назначить их по мере необходимости для последующих сеансов HTTP.