python基于http的网络通信和网站端口暴露;Python网络编程之HTTP协议的python应用

一、HTTP协议概述

HTTP(Hypertext Transfer Protocol)即超文本传输协议,是Web应用程序使用的协议,在Web浏览器和Web服务器之间传递HTML页面和数据。HTTP是基于TCP/IP协议来传输数据的,是一种无状态的协议。

关键特点:

支持客户/服务器模式:Web浏览器作为HTTP客户端通过URL向HTTP服务器发送HTTP请求,然后HTTP服务器会把HTTP响应返回给客户端;

简单快速:客户端向服务器请求时,只需要传递简单的HTTP请求,服务器响应时也只需要返回简单的HTTP响应就可以了。而HTTP协议通信速度快,适用于分布式环境下的基于Hypermedia的系统;

灵活:HTTP协议可以通过发送不同的请求方法、请求头等让服务器端做不同的处理;

无连接:客户端发送请求后,服务器端响应完该请求后就会断开连接。HTTP服务器端需要很短的时间维护每个连接,而且它并不对客户端发送请求的数量有所限制。这样就可以更快地响应用户的请求。

二、Python实现HTTP请求

  1. requests库
    requests库是Python实现HTTP请求的一个第三方库,它提供了一个更加简单的HTTP请求接口,简单易学,非常适合做Web测试和爬虫开发。

安装方法:

yaml 复制代码
pip install requests

使用方法:

python 复制代码
import requests

url = "http://www.baidu.com"
response = requests.get(url)
print(response.content.decode())

详细解释:

使用requests.get()函数发起GET请求,并将响应对象存储到response变量中;

调用响应对象的content属性获取响应内容的字节流数据,并使用decode()函数将其解码成字符串类型;

输出获取到的响应内容

  1. urllib库
    urllib库是Python自带的HTTP请求库,也是Python实现HTTP请求的一种基础方式,比较适合初学者学习使用。

使用方法:

python 复制代码
import urllib.request

url = "http://www.baidu.com"
response = urllib.request.urlopen(url)
print(response.read().decode())

详细解释:

使用urllib.request.urlopen()函数发起GET请求,并将响应对象存储到response变量中;

调用响应对象的read()函数获取响应内容的字节流数据,并使用decode()函数将其解码成字符串类型;

输出获取到的响应内容。

三、Python实现HTTP服务器

在Python中实现HTTP服务器,可以使用内置的http.server模块,它提供了HTTP协议的处理和解析。

  1. 简单示例
    下面是一个简单的例子,实现一个简单的HTTP服务器,可以根据请求的不同返回不同的响应内容:
python 复制代码
from http.server import SimpleHTTPRequestHandler, HTTPServer

class MyHTTPRequestHandler(SimpleHTTPRequestHandler):

    def do_GET(self):
        if self.path == '/':
            self.path = '/index.html'
        return SimpleHTTPRequestHandler.do_GET(self)

if __name__ == '__main__':
    server = HTTPServer(('', 8000), MyHTTPRequestHandler)
    print('Serving HTTP on localhost port 8000...')
    server.serve_forever()

详细解释:

创建一个继承自SimpleHTTPRequestHandler类的子类,并重写do_GET方法,通过判断请求路径来返回不同的响应内容;

在__main__函数中创建一个HTTPServer对象,指定服务器地址、端口和处理器;

调用HTTPServer对象的serve_forever方法,启动HTTP服务器,并指定服务状态一直保持运行。

  1. Flask框架示例
    下面是一个使用Flask框架实现HTTP服务器的示例:
python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def home():
    return '<h1>Hello Flask!</h1>'

@app.route('/user/<name>')
def user(name):
    return f'<h1>Hello,{name}!</h1>'

详细解释:

导入Flask框架,创建一个Flask对象实例,并通过__name__参数指定当前模块的名称;

使用@app.route()装饰器来定义路由和视图函数,通过return语句返回响应内容;

调用Flask对象实例的run方法,启动HTTP服务器。

相关推荐
钢铁男儿12 分钟前
C# 深入理解类(析构函数和this关键字)
java·python·c#
折戟不必沉沙15 分钟前
python使用pycharm和conda 设置默认使用清华镜像
python·pycharm·conda
supingemail19 分钟前
深度剖析 MCP SDK 最新版:Streamable HTTP 模式
网络·网络协议·http
(・Д・)ノ22 分钟前
python打卡day34
开发语言·python
二九筒1 小时前
Python Selenium 使用指南
开发语言·python·selenium
小韩加油呀1 小时前
python定时删除指定索引
python·elk·indics
猎板PCB厚铜专家大族1 小时前
2025有铜半孔工艺参数设计规范
网络·算法·设计规范
领世达检测V133529092491 小时前
智能门锁为什么需要做欧盟网络安全 EN18031 标准检测认证
运维·服务器·网络
学技术的大胜嗷2 小时前
YOLOv8损失函数代码详解(示例展示数据变换过程)
人工智能·python·深度学习·yolo·目标检测
水木姚姚2 小时前
自动生成图标小程序(iOS)
python·macos·ios·ai·objective-c·xcode