Как сохранить куки, когда приложение пишет в document.cookie?

Доступ к /proc/PID/fd/0не приводит к доступу к файловому дескриптору 0 процесса PID , он обращается к файлу, который PID открыл в файловом дескрипторе 0. Это тонкое различие, но это имеет значение. Файловый дескриптор — это соединение процесса с файлом. Запись в дескриптор файла записывается в файл независимо от того, как файл был открыт.

Если /proc/PID/fd/0является обычным файлом, запись в него изменяет файл. Данные не обязательно являются тем, что процесс будет читать дальше :, они зависят от позиции, прикрепленной к файловому дескриптору, которую процесс использует для чтения файла. Когда процесс открывается /proc/PID/fd/0, он получает тот же файл, что и другой процесс, но позиции файлов не зависят друг от друга.

Если /proc/PID/fd/0является каналом, то запись в него добавляет данные в буфер канала. В этом случае процесс, читающий из канала, будет считывать данные.

Если /proc/PID/fd/0является терминалом, то запись в него выводит данные на терминал. Файл терминала двунаправленный :запись в него выводит данные, т.е. терминал отображает текст; чтение с терминала вводит данные, то есть терминал передает пользовательский ввод.

Python выполняет как чтение, так и запись в терминал. Когда вы запускаете echo 'print "Hello"' > /proc/$(pidof python)/fd/0, вы записываете print "Hello"на терминал. Терминал отображает print "Hello"в соответствии с инструкциями. Процесс python ничего не видит, он все еще ждет ввода.

Если вы хотите передать входные данные процессу Python, вы должны заставить терминал сделать это. См. ответ crasic , чтобы узнать, как это сделать.

0
01.11.2019, 00:49
1 ответ

Это не сработает, если вы сохраните файлы cookie на стороне клиента -с помощью JavaScript в своем HTML-коде. Wget и curl не интерпретируют код JavaScript, они просто возвращают ответ, отправленный сервером.

Вам необходимо установить файлы cookie на стороне сервера -, например, с помощью setcookie в PHP. Таким образом, файлы cookie отправляются в заголовке HTTP-ответа Set -Cookie и могут быть сохранены с помощью wget/curl.

Заголовок ответа (, выводимый из wgetс использованием опции -S/ --server-response)с куки, выглядит следующим образом:

HTTP/1.1 200 OK
Date: Fri, 01 Nov 2019 00:33:05 GMT
Server: Apache/2.4.25 (Debian)
Set-Cookie: testcookie=myvalue; expires=Fri, 01-Nov-2019 01:33:05 GMT; Max-Age=3600
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Файл cookie был установлен на странице PHP с помощью:

<?php setcookie("testcookie", "myvalue", time()+3600); ?>
0
28.01.2020, 03:09

Теги

Похожие вопросы