使用 Python PHP 模拟 Web 交互 session_start() 不起作用



我有以下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代码在我的mac上运行:

#!/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 cookie不存在?以及如何修复python代码,以便页面产生正确的输出。

Python代码没有问题。

当您第一次在浏览器中加载页面时,cookie不在源代码中。但是当您刷新它(第二个请求,但使用Cookie:(时,它在源代码中。

它不存在于HTML中,因为PHP会话cookie不在$_COOKIE中,除非您首先使用HTTP标头Cookie:发送cookie。尝试PHP中的session_id()或Python中的response.getheader("Set-Cookie")来获取当前会话cookie。

相关内容

  • 没有找到相关文章

最新更新