имитировать веб-взаимодействие с python php session_start () не работает - PullRequest
0 голосов
/ 19 марта 2020

У меня есть следующая html страница

<?php session_start(); ?>
<html>
<body>
<?php
echo '<!-- cookies  -->';
foreach($_COOKIE as $k => $v) {
    echo '<!-- ' . $k . '=>' . $v . ' -->';
}
?>
</body>
</html>

, которая выдает следующий источник страницы при просмотре страницы с https://daley.ws/file1.php

<html>
<body>
<!-- cookies  --><!-- PHPSESSID=>22u20jsi288vtk5epser56d2bn7leb6n --></body>
</html>

следующий код python выполняется на моей ма c:

#!/Library/Frameworks/Python.framework/Versions/3.8/bin/python3

import urllib.request

REQ_HOST = "daley.ws"
DALEY_WS = 'https://daley.ws'
DALEY_WS_FILE1 = '{}/file1.php'.format(DALEY_WS)
DALEY_WS_FILE2 = '{}/file2.php'.format(DALEY_WS)

if __name__ == "__main__":
    print(DALEY_WS_FILE1)
    req = urllib.request.Request(DALEY_WS_FILE1,\
            unverifiable=True, origin_req_host=REQ_HOST,\
            method='POST')
    with urllib.request.urlopen(req) as response:
        data = response.read().decode()
    print('data: {}'.format(data))

и выдает следующий вывод:

https://daley.ws/file1.php
data: <html>
<body>
<!-- cookies  --></body>
</html>

, почему отсутствует PHPSESSID cook ie? и как мне исправить код python, чтобы страница выводила правильный вывод.

1 Ответ

0 голосов
/ 19 марта 2020

Нет проблем с кодом Python.

При первой загрузке страницы в браузере повар ie не находится в исходном коде. Но когда вы обновляете sh его (второй запрос, но с Cookie:), он находится в исходном коде.

Его нет в HTML, потому что PHP сессия готовит ie НЕ в $_COOKIE, если только вы не отправите повара ie с заголовком HTTP Cookie:. Попробуйте session_id() в PHP или response.getheader("Set-Cookie") в Python, чтобы получить текущую сессию повара ie.

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