gpt4 book ai didi

cookies - phantomjs - 没有为任何 XHR/POST/GET AJAX 请求发送 Cookie

转载 作者:行者123 更新时间:2023-12-03 14:25:12 26 4
gpt4 key购买 nike

我在尝试使用 PhantomJS 登录时发现了一个有趣的问题。我不知道为什么它实际上会发生。

基本上你像这样启动一个远程调试器:

/usr/local/bin/phantomjs --web-security=no --remote-debugger-port=13379 --remote-debugger-autorun=yes /tmp/test.js 

在远程调试器中:
> location.href = "https://www.mysite.com/login"
> $('input[name="username_or_email"]').val('blah@email.com')
> $('input[name="password"]').val('wrongpassword')

> $('button[type="submit"]').submit()

在 Chrome 中执行此操作会在 XHR 请求后给我正确的“密码错误”消息,而使用 phantomjs 会给我一个一般错误,因为没有使用 phantomjs 发送 cookie(我检查了 header )。

我对为什么 phantomjs 不使用 POST 请求发送 cookie 感到很困惑。有谁知道我们如何让 phantomjs 按应有的方式发送带有所有请求的 cookie?设置 cookie 文件也没有任何区别。

最佳答案

好的,这似乎与 session cookie 而不是常规 cookie 有关。

这是负责 phantomjs 的 cookie 功能的开发人员和一些与您有相同问题的人的一个巨大线程。

https://groups.google.com/forum/#!msg/phantomjs/2UbPkIibnDg/JLV9jBKxhIQJ

如果您不想浏览整个文件,基本上:
Phantomjs 的行为类似于常规浏览器,它会在浏览器关闭时删除所有 session cookie,在您的情况下,当您的脚本执行结束时。

所以,即使你设置了 --cookies-file=/path/to/cookies.txt 选项您将只在其上存储常规 cookie,以供后续执行。

您有两种可能的方法。一种是在同一个脚本中发出所有请求,另一种是手动存储和恢复 cookie。

在线程上,您可以使用几个函数来执行此操作。

function saveCookies(sessionCookieFile, page) {
var fs = require("fs");
fs.write(sessionCookieFile, JSON.stringify(page.cookies));
}

function restoreCookies(sessionCookieFile, page) {
var fs = require("fs");
var cookies = fs.read(sessionCookieFile);
page.cookies = JSON.parse(cookies);
}

var page = require('webpage').create();

而且,如果一切都失败了……

您可以下载源代码并重新复制 phantomjs

您需要编辑 src/cookiejar.cpp 并删除或评论 purgeSessionCookies();
希望这可以帮助。

关于cookies - phantomjs - 没有为任何 XHR/POST/GET AJAX 请求发送 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com