SHOUTcast获取请求每次都被拒绝,显示404错误。
2018-4-15 13:20:57
收藏:0
阅读:144
评论:2
代码
function radiotest(host,port)
local rstr="Online"
local sock, err = socket.tcp()
if not sock then
return "Failed"
end
sock:settimeout(1)
local res, err = sock:connect(host, port)
if not res then
return "offline"
else
sock:settimeout(1)
sock:send("GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status \r\n Accept: */*\r\n\r\n")
sock:settimeout(3)
local data=sock:receive('*a')
sock:close()
print(data)
-- 其他处理内容在这里
end
end
print(radiotest("10.*.*.*", 1234))
上述套接字连接返回给我:
ICY 404 Resource Not Found
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/win32 v1.9.7<BR>
icy-notice2:The resource requested was not found<BR>
我想问题在我的标头列表中,但我无法跟踪它。
所有浏览器都可以正常打开该页面(Opera需要伪装成另一个浏览器;否则它只会不断下载所有歌曲)。
我已经尝试在 sock:send()内使用以下字符串
GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\nGET /index.html HTTP/1.0\r\n UserAgent: Opera/9.80 (Windows NT 6.1; Win64; x64) Presto/2.12.388 Version/12.12\r\n\r\nGET /index.html HTTP/1.0\r\n UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17\r\n\r\n
我完全卡在这部分。我如何使用 socket.tcp() 获取页面?
点赞
用户1190388
@Brad 感谢您的帮助,关于 Wireshark 的问题您给了很实用的建议。由于我在请求中提供了额外的空格,所以 User-Agent 头未被传递到服务器。
sock:send("GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status \r\n Accept: */*\r\n\r\n")
\r\n UserAgent: SHOUTcast Song Status 应该修改为:
\r\nUser-Agent: SHOUTcast Song Status
现在已经正常工作了。
感谢您的帮助。 :D
在过滤掉 HTML 后,函数的结果如下:
在线(Tonic - If You Could Only See)
在线(Tonic - If You Could Only See)256 kbps 的流正以 0 个听众(0 个独特的)为伴奏。
2013-02-18 03:27:02
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
经过查看您的数据包捕获,似乎实际发送到网上的内容有问题。您的用户代理字符串未被发送:
> GET /index.html HTTP/1.0 < ICY 404 资源未找到 < icy-notice1:<BR>SHOUTcast 分布式网络音频服务器/win32 v1.9.7<BR> < icy-notice2:请求的资源不存在<BR>如果您未指定包含“Mozilla”的用户代理,您将无法访问管理员界面或其中的任何部分。返回并再次检查您发送的代码。