Node.js Socket.io作为客户端进行身份验证
我制作了一个nodeJS脚本来自动化一个网站上的一些操作-这不是我的 为了更好地控制正在发生的事情,我想听听网站socket.io流上的事件 目前在节点中工作:Node.js Socket.io作为客户端进行身份验证,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,我制作了一个nodeJS脚本来自动化一个网站上的一些操作-这不是我的 为了更好地控制正在发生的事情,我想听听网站socket.io流上的事件 目前在节点中工作: 登录网站并将cookie作为字符串接收,以便进一步请求 使用来自登录的cookies发送请求(执行实际操作) 打开websocket连接并收听公共(!)事件 在节点中还不起作用: 读取仅发送给特定用户(me)的“私有”事件 当我点击这个网站上的一个特定按钮时,我检查了chrome中发生的一个XHR请求。发送此请求后,chrome
- 登录网站并将cookie作为字符串接收,以便进一步请求
- 使用来自登录的cookies发送请求(执行实际操作)
- 打开websocket连接并收听公共(!)事件
- 读取仅发送给特定用户(me)的“私有”事件
const io = require('socket.io-client');
const request = require('request');
main()
function main() {
var socket = io(socketURL, {});
socket.on('connect', function () {
setTimeout(function(){
performAction(); // Send XHR to server
console.log(" > Sending XHR request...")
}, 1500)
});
socket.on('step_calc', function (data) { // Personal event about my action
console.log(" >>> Event = step_calc: " + data)
});
socket.on('login_time', function (data) { // Personal event being displayed every few seconds IF LOGGED IN (chrome) console.log(" >>> Event = step_calc: " + data)
});
socket.on('userCount', function (data) { // Public event
console.log(" >>> Event = userCount: " + data)
});
socket.on('disconnect', function () {
console.log(" > [Disconnected]");
});
}
连接到套接字1500毫秒后,它将发送XHR请求,该请求将使服务器向套接字发送信息-performAction()
当我检查chrome控制台时:
- 步骤\u calc之后是成功的XHR请求(特定于帐户)
- 登录时间每2秒显示一次,但仅在我登录时显示(特定于帐户)
- userCount一直都在向所有人显示
- 既然我已经收集了所有这些信息,我该如何使用它呢
- 如何使套接字连接“连接”到我从登录中获得的cookie(我使用它向网站发送请求)
- 这两个请求是不同的,还是在某种程度上是相同的
- 这些信息有助于解决我的问题吗
socket.io客户端
构造函数,这可能意味着socket连接没有经过身份验证
试试这个:
var socket = io(socketURL, {
extraHeaders: {
Cookie : '...'
}
});
有文档记录。从我所看到的,您没有将会话cookie传递给
socket.io客户端
构造函数,这可能意味着套接字连接没有经过身份验证
试试这个:
var socket = io(socketURL, {
extraHeaders: {
Cookie : '...'
}
});
记录。谢谢,我只是尝试通过这种方式从网站登录中传递cookies。它不会抛出错误,但也不会在套接字上显示任何特定于帐户的信息。我刚刚看到,打开网站时的请求似乎在返回新sid时“刷新”了一个“io”cookie。我真的很抱歉,我从未使用过socket.io,我不知道我需要发送哪些cookies。这就是在这个“io”请求期间cookies的情况:我想您应该发送服务器正在发送的任何cookies。不过,我不确定socket.io客户端本身在发送回特定cookie方面能做多少。可能不会太多,因为我登录网站得到的cookie不包括这个“io”cookie。Chrome肯定在后台做了些什么。你知道吗,如果我作为客户可以更改Sid?也许我必须重新创建用SID响应的请求,并执行类似socked的操作。id=response.Sid?套接字id是服务器创建的,我怀疑客户端是否可以更改它。至于cookies,您需要专门查找在
socket.io
握手协议(最初通过HTTP到/socket.io/…
)期间发送和接收的cookies。Ahhh。那么你链接到我的额外标题中的cookie是用于我在chrome中看到的握手吗?因此,如果我设法发送相同的cookies集,这可能会起作用。我将尝试报告。非常感谢。谢谢,我只是尝试通过这种方式从网站登录传递cookies。它不会抛出错误,b