我一直试图为一个网站制作一个互动聊天机器人,部分灵感来自已经开始制作网站的朋友。他们正在node.js制作他们的作品,但我想用红宝石制作他的,因为我对它更加满意。然而,经过几个小时的调试和尝试新事物,我开始认为机械化有问题。
在node.js中,我安装了request
,因为这是我的朋友用来抓取他们的页面的。由于ruby根本不工作,我决定在node.js中创建它,然后将其转移。由于网站所有者希望机器人是私有的,我不会进入具体细节,但这就是我所拥有的。
的Node.js
request.post({
headers: {
"User-Agent": "bot",
"Host": "example.com",
"Referer": "http://example.com/",
"X-CSRF-Token": token
},
url: "http://example.com/post",
body: "channel=" + channel + "&action=post&data=" + message
}});
这是Ruby中的等效代码:
@agent.post("http://example.com/post", {
"channel" => @channel,
"action" => "post",
"data" => message
},
{
"User-Agent" => "bot",
"Host" => "example.com",
"X-CSRF-Token" => @csrf,
"Referer" => "http://example.com/"
})
据我所知,这两个帖子都是相同的,但网站没有响应ruby脚本。发送数据唯一需要的是会话cookie和特殊令牌,但检查机械化的cookie表明它就在那里。是不是以某种方式在帖子中发送?我真的很困惑,并且花了很长时间试图让它发挥作用。
编辑:
我试图从正确的响应中模仿cookie,尽管Fiddler表示他们发送相同的数据但它并没有解析ruby版本。