因此,我要使用此javascript代码在每个页面上设置一个Cookie:
setTimeout(function(){
var pageStats = getCookie('PageStats');
var currentPage = {
"url": window.location.href,
"render_time": $('.render_time').html(),
"queries_number": $('.queries_number').html(),
"queries_time": $('.queries_time').html()
}
document.cookie = "PageStats=" + JSON.stringify(currentPage) + ";path=/";
}, 1000);
然后我尝试通过我的python脚本获取它:
import requests
session = requests.Session()
response = session.get('http://127.0.0.1:800/')
print(response.cookies.get_dict())
这返回{},尽管我可以通过浏览器查看所有cookie。 怎么了?
答案 0 :(得分:2)
您要获取的Cookie来自requests.Session()
会话,而不是浏览器。发生这种情况的原因是,仅当您的浏览器呈现HTML时才执行JavaScript。由于请求不会呈现HTML,而只是发送一个简单的HTTP请求,因此未设置这些cookie。我可以看到此工作的唯一方法是,如果您在服务器端设置cookie。
这是一个使用Python 3的Flask的简单示例:
from flask import Flask, make_response
app = Flask(__name__)
@app.route("/")
def index():
r = make_response("Hello World")
r.set_cookie("flask-cookie", "this is some data in a cookie")
return r
if __name__ == "__main__":
app.run(port=8080)
或者,如果您使用NodeJS的ExpressJS:
var express = require("express");
var app = express();
app.get("/", function(req, res) {
res.cookie("express-cookie", "this is some data in a cookie").send("Hello World");
});
app.listen(8080);