有一个网站可以与在线游戏的虚拟物品配合使用。我制作了一个chrome扩展程序,可以自动执行该网站上的某些操作。因为我想在我的raspberryPi上运行(并且带有扩展名的chrome似乎太慢而且效率低)我试图将其移动到node.js.
该网站的登录使用Steam OpenID。它允许您从列表中选择项目,单击几个按钮,然后它会向您发送一个关于蒸汽的交易。
当我登录时,我的扩展程序与该网站一起使用。它使用jQuery getJSON接收数据库,循环遍历数组,将一些值推送到数组中,然后发送一个post请求,告诉网站我想要哪些项目以及我提供哪些项目。
以下是我从chrome发送请求的方式:
function withdrawXHR(botId, playerItems, botItems) {
$.ajax({
url: websiteURL,
type: 'post',
data: {
"steamid": botId,
"peopleItems": playerItems,
"botItems": botItems
},
success: function (data) {
console.error('>> Done: ' + data)
console.log("")
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.error('>> Error: ' + errorThrown)
console.log("")
}
});
}
到目前为止,我可以在节点中执行所有操作,例如接收数据库,完成它,过滤掉我需要的值,但我无法设置发送工作请求。问题可能是登录/网站如何知道我是谁。
我使用wrapAPI(chrome扩展名)来捕获手动处理网站时发送的请求。这是它的样子:
所以这些是我想知道的事情:
我如何从节点发送此请求?
网站如何知道我是谁?他们显然知道,因为他们正在向我发送报价,但我无法看到任何"个人"该请求中的数据。
我是否需要以某种方式从Node登录Steam OpenId?那可能吗?
什么是CF-RAY? (参见捕获请求的结尾)。
我对JS很新,一般要求甚至更新"到Node.js.我不完全理解发送请求的背景是如何工作的。我只需要一些提示,如何实现我的目标。
非常感谢任何帮助!谢谢! :)
答案 0 :(得分:1)
您不能将XMLHttpRequest用于跨域的资源。 (顺便说一下,除非你使用扩展名)
我会考虑抓住express.js,以及一些名为CORS的东西。 CORS允许跨域请求。
此处:http://enable-cors.org/server_expressjs.html
以下是有关浏览器扩展程序中XHR请求的一些信息:https://developer.chrome.com/extensions