套接字库,连接到网站并打印其内容。
2014-10-6 14:46:27
收藏:0
阅读:129
评论:1
我刚刚制作了一个简单的网站 testingtest.comyr.com(.php 文件中只包含一个回显“Hello, world!”语句),托管在 www.000webhost.com 上,我想要做的就是打印出在此处编写的内容(即“Hello, world!”文本)。 我使用的代码(请注意,我只能在我的项目中使用“socket”库):
sok1 = require("socket")
Host = "testingtest.comyr.com"
Link = "/"
sok2 = sok1.connect(Host, 80)
sok2:send("GET "..Link.." HTTP/1.0\r\n\r\n")
receive = sok2:receive('*a')
print(receive)
但是这给了我:
HTTP/1.1 302 Found
Date: Wed, 01 Oct 2014 17:03:01 GMT
Server: Apache
Location: http://error404.000webhost.com/?
Content-Length: 216
Connection: close
Connection-type: text/hmtl; charset=iso-8859-1
<!DOCUMENT HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
The document has moved here.
</body></html>
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
你得到了
302状态和Location头部,这表明有一个重定向和一个新的 URL 跳转。由于你使用的是原始的 socket 模块,它无法处理重定向;你需要使用socket.http模块来处理,或者编写一些逻辑来解析响应查找Location头部是否有任何3xx状态,然后使用新的 URL 重复请求。考虑到重定向的 URL 是
error404.000webhost.com(404 表示页面未找到),你可能在部署 PHP 页面时犯了一些错误。如果只能使用“socket”库,类似这样的代码或可处理重定向:
sok1 = require("socket") Host = "testingtest.comyr.com" Link = "/" local hosts = {} while true do sok2 = sok1.connect(Host, 80) sok2:send("GET "..Link.." HTTP/1.1\r\nHost: "..Host.."\r\n\r\n") receive = sok2:receive('*a') -- 检查是否为重定向 if receive:find("^HTTP/1%.%d 3%d%d") then local host, link = receive:match("Location: http://([^/\r\n]+)(/?[^\r\n]*)") if host and link and not hosts[host] then Host, Link = host, #link > 0 and link or "/" hosts[host] = true -- 跟踪重定向以避免循环 print("redirecting to", host..link) end else break -- 完成 end end print(#receive)该逻辑检查循环,但仅处理重定向到
http:URL(您需要检查 https 并将端口 80 更改为 443)。我还添加了Host头部,因为如果不添加该头部,可能无法在某些 ISP 提供商上运行,这些提供商在同一 IP 地址上托管多个域。