每次使用404时,SHOUTcast获取请求被拒绝

时间:2013-02-15 09:45:05

标签: sockets lua shoutcast luasocket

代码

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)
        -- Further processing content here
    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\n
  • GET /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\n
  • GET /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()

获取页面

2 个答案:

答案 0 :(得分:2)

在查看您的数据包捕获后,似乎实际通过网络发送的内容是错误的。你的用户代理字符串没有成功:

> GET /index.html HTTP/1.0

< 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>

如果您未指定包含Mozilla的用户代理,您将无法访问管理界面或其任何部分。返回并再次检查您发送的代码。

答案 1 :(得分:0)

@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 - 如果你只能看到)

     

在线(Tonic - 如果你只能看到)流量达到256 kbps,32个听众中有0个(0个唯一)