Сохранять файлы cookie между двумя запросами на завивки

Я знаю, что используя cURL, я могу видеть полученные файлы cookie/заголовки с помощью

curl --head www.google.com

И я знаю, что я могу добавить заголовки к моему запросу, используя

curl --cookie "Key=Value" www.google.com

В настоящее время я работаю над тестированием проблемы, которая требует постоянных файлов cookie, и их может быть много.

Как я могу эффективно сохранять файлы cookie между двумя запросами cURL?

Если возможно использование временного файла для хранения.

Ответ 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():

Параметры curl_easy_setopt():

  • CURLOPT_COOKIE - установить содержимое заголовка HTTP Cookie

  • CURLOPT_COOKIEFILE - имя файла для чтения файлов cookie из

  • CURLOPT_COOKIEJAR - имя файла для хранения файлов cookie для

  • CURLOPT_COOKIESESSION - запустите новый сеанс cookie

  • CURLOPT_COOKIELIST- добавлять или обрабатывать файлы cookie, хранящиеся в памяти

Затем вы можете сохранить файлы cookie, как хотите, и назначить их по мере необходимости для последующих сеансов HTTP.

Ответ 2

curl -b cookie.txt -c cookie.txt <url> или curl --cookie cookie.txt --cookie-jar cookie.txt <url> будут хранить и отправлять сохраненные куки.

Ответ 3

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

Для Windows 10 сборка новее 1706 вы можете использовать curl из командной строки.

curl -c c:\Users\<your-name>\Desktop\cookie.txt -F "log=<your username>" -F "pwd=<your-pwd>" https://acme.net/wp-login.php

вы не увидите ответа в своем терминале. он просто обновляется, но ваш файл cookie уже сохранен.

затем введите ниже, чтобы прочитать и отправить файлы cookie, которые вы только что сохранили.

curl -b c:\Users\<your-name>\Desktop\cookie.txt -L https://acme.net/my-profile/

вся веб-страница, которая должна быть доступна только для зарегистрированных пользователей, будет отображаться внутри вашего терминала, включая любые данные, которые загружаются динамически через javascript.

другие источники вы можете сослаться на:

https://wpmayor.com/login-to-wordpress-dashboard-via-curl/

https://gist.github.com/subfuzion/08c5d85437d5d4f00e58

https://www.youtube.com/watch?v=B4ilccLUQVs

https://makandracards.com/makandra/48262-how-to-use-cookies-with-curl