1元成本用Python搭建一个小型广域网服务器
创始人
2024-10-22 09:14:18
0

一、项目背景

我想用香橙派搭建一个小型的广域网服务器,发现需要组一个服务器,一年差不多要30元。我只是玩玩,经过一番寻找,找到了一个1元成本实现的方式。当然不包括香橙派的成本。

二、原理

需要一个广域网服务器,一个服务端,一个客户端,原理是广域网服务器与服务端映射绑定,客户端访问广域网服务器,广域网服务器把访问信息传送给服务端,服务端再把信息返回给广域网服务器,后者再把信息发送给客户端。

图形化表示如下:

服务端和客户端的脚本按照局域网的脚本来写。

三、材料准备

除了Python外,还需要准备Sakura Frp账号。具体步骤如下:

①访问Sakura Frp,点击“注册账号”

②按照要求注册账号

③返回步骤一的网站,点击“管理面板”

④在页面右上角的“每人签到”中可以领取流量,一天可以领导1-4GB

⑤点击顶栏中的“用户”->“实名认证”,认证信息。这里需要1元。因为《网络安全法》,不认证的话不能使用。此外,这里使用的1元是因为支付宝的原因(具体我也不清楚)。

⑥下载软件,点击顶栏的“服务”->“软件下载”,下载客户端

⑦在客户端需要登录,登录后需要配置隧道

这里选择表达和红圈中类似的。这种不支持浏览器访问(HTML/HTMLS协议),但是也可以用“奇技淫巧”达成浏览器访问的效果,这个我们后面细说。图中红圈中类的类型支持TCP协议、UDP、协议、WOL网络唤醒,按需要选择后,需要配置。

隧道名等不多说。如果你的服务端和本软件在一台电脑上,只需要设置本地端口了,否则需要设置IP地址和端口了。其他的按需要设置。

四、服务端Python脚本

这是一个简单的示例脚本,只能做一次应答。

from socket import *   if __name__ == "__main__":     server: socket = socket(AF_INET, SOCK_STREAM)     server.bind(("127.0.0.1", 8080)) #ip地址和端口需要和软件中设置的一致     server.listen(128)     while True:         client, address = server.accept()         recv_data: bytes = client.recv(1024)         print(recv_data.decode("utf-8"))         client.sendall(b"Hi!!!") 

五、客户端Python脚本

同样,这是一个简单的示例脚本,只能做一次应答。

from socket import *   if __name__ == "__main__":     client: socket = socket(AF_INET, SOCK_STREAM)     client.connect(("122.228.26.226", 20584))      #这里的ip地址和端口是在软件开启隧道后生成的,在软件“日志功能”里可以看到     client.sendall(b"Hi!!!How Are You!!!")     recv_data: bytes = client.recv(1024)     print(recv_data.decode("utf-8")) 

六、实现浏览器访问

6.1原理

再添加一个网页服务器,与上面的客户端在一个类或者代码段里面,浏览器访问网页服务器,网页服务器把网页请求信息发送给客户端,客户端发送给服务器,服务器把返回信息发送给客户端,客户端再发送给网页服务器,网页服务器再发送给浏览器。

图形化表达如下:

6.2服务端Python脚本

这是一个简单的示例脚本,返回一个网页

from socket import *   HTML: str = "HTTP/1.1 200 OK\ncontent-Type: text/html; charset=UTF-8\n\n" \             "测试页

标题

文本

" if __name__ == "__main__": server: socket = socket(AF_INET, SOCK_STREAM) server.bind(("127.0.0.1", 8080)) #ip地址和端口需要和软件中设置的一致 server.listen(128) while True: client, addr = server.accept() recv_msg: bytes = client.recv(1024) print(recv_msg) send_msg: bytes = HTML.encode("utf-8") client.sendall(send_msg)

6.3客户端和网页服务器Python脚本

这是一个简单的示例脚本,返回一个网页,写在一起,方便

from socket import *   if __name__ == "__main__":     _web_socket: socket = socket(AF_INET, SOCK_STREAM)     _web_socket.bind(("127.0.0.1", 10203)) # 端口可以随机     _web_socket.listen(1)     while True:         c, addr = _web_socket.accept()         recv_data: bytes = c.recv(1024)         client: socket = socket(AF_INET, SOCK_STREAM)         client.connect(("122.228.26.226", 20584))         send_msg: str = recv_data.decode("utf-8").split("\n")[0].replace("HTTP/1.1\r", "")         client.sendall(send_msg.encode("utf-8"))         # 这里的ip地址和端口是在软件开启隧道后生成的,再软件“日志功能”里可以看到         # 在发送msg前,需要从msg中提取出访问地址(就是类似/index/1/123这样的,是发送他),         recv_msg: bytes = client.recv(1024)         print(recv_msg)         c.sendall(recv_msg) 

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...