广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python socket怎么解析HTTP请求内容
  • 175
分享到

Python socket怎么解析HTTP请求内容

2023-06-29 04:06:54 175人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python Socket怎么解析Http请求内容”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python socket怎么解析HTTP请求内容”吧!so

本篇内容主要讲解“python Socket怎么解析Http请求内容”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python socket怎么解析HTTP请求内容”吧!

    socket解析HTTP请求内容

    思路

    1. 解析HTTP请求的头部

    HTTP请求头部的结束符行为"\r\n",可以按行读取HTTP请求头的内容,如果读到一行为"\r\n",说明HTTP请求头结束。

    2. 请求头里面含有Content-Length参数

    如果HTTP请求里面有Content-Length参数,说明HTTP请求的内容大小是确定的,请求直接读取Content-Length的值,然后读取相应字节的的内容即可。

    3. 请求头里面含有Transfer-Encoding: chunked 参数

    如果HTTP请求里面有Transfer-Encoding参数,说明HTTP请求的内容大小是不确定的,这种内容的结束符是"0\r\n\r\n",因此可以按行读取HTTP请求的内容部分,如果连续读到"0\r\n"和"\r\n"说明内容读取完毕。

    代码实现

    代码中: self._file 代表的是socket.makefile() 

     def get_http_content(self):        content_length = 0        transfer_encoding = False        while True:            req_line = self._file.readline()            req_line = str(req_line, "utf-8")             # 遇到http头结束符            # 读取http内容            if req_line == "\r\n":                if content_length != 0:                    content = self._file.read(content_length)                    content = str(content, "utf-8")                    self._content = content                    return None                 if transfer_encoding:                    content = ""                    self._file.readline()                    while True:                        line = self._file.readline()                        line = str(line, "utf-8")                        if line == "0\r\n":                            sub_line = self._file.readline()                            sub_line = str(sub_line, "utf-8")                            if sub_line == "\r\n":                                self._content = content                                return None                        else:                            content += line                            continue                    self._content = False             # 头文件没有结束            # 并且没有找到关于内容大小的字段            else:                if content_length == 0 and transfer_encoding is False:                    Words = req_line.split()                    if words[0] == "Content-Length:":                        content_length = int(words[1])                    if words[0] == "Transfer-Encoding:":                        transfer_encoding = True             self._content = False

    socket 模拟http请求

    # coding: utf-8import socketfrom urllib.parse import urlparsedef get_url(url):    url = urlparse(url)    host = url.netloc    path = url.path    if path == "":        path = "/"    # 建立 socket 连接    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    client.connect((host, 80))    client.send("GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n".fORMat(path, host).encode("utf-8"))    data = b""    while True:        d = client.recv(1024)        if d:            data += d        else:            break    data = data.decode("utf-8")    html_data = data.split("\r\n\r\n")[1]    print(html_data)    client.close()    passif __name__ == '__main__':    get_url("http://www.baidu.com")

    到此,相信大家对“Python socket怎么解析HTTP请求内容”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: Python socket怎么解析HTTP请求内容

    本文链接: https://www.lsjlt.com/news/322405.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python socket怎么解析HTTP请求内容
      本篇内容主要讲解“Python socket怎么解析HTTP请求内容”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python socket怎么解析HTTP请求内容”吧!so...
      99+
      2023-06-29
    • Python socket如何解析HTTP请求内容
      目录socket解析HTTP请求内容思路1. 解析HTTP请求的头部2. 请求头里面含有Content-Length参数3. 请求头里面含有Transfer-Encoding: ch...
      99+
      2022-11-13
    • c语言中怎么利用http请求解析表单内容
      本篇文章给大家分享的是有关c语言中怎么利用http请求解析表单内容,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码如下: #ifn...
      99+
      2022-10-18
    • 怎么用注解+RequestBodyAdvice实现http请求内容加解密方式
      这篇文章主要介绍“怎么用注解+RequestBodyAdvice实现http请求内容加解密方式”,在日常操作中,相信很多人在怎么用注解+RequestBodyAdvice实现http请求内容加解密方式问题上存在疑惑,小编查阅了各式资料,整理...
      99+
      2023-06-20
    • 使用注解+RequestBodyAdvice实现http请求内容加解密方式
      注解主要用来指定那些需要加解密的controller方法 实现比较简单 @Target({ElementType.METHOD}) @Retention(RetentionPol...
      99+
      2022-11-12
    • jmeter怎么获取请求内容
      要获取JMeter的请求内容,可以使用JMeter的HTTP取样器。以下是一些步骤: 在测试计划中添加一个线程组(Thread G...
      99+
      2023-10-26
      jmeter
    • Python Http发送请求怎么实现
      本篇内容介绍了“Python Http发送请求怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!浅析requests在不借助其...
      99+
      2023-07-02
    • POST请求和GET请求怎么传递和接收解析参数
      本篇内容介绍了“POST请求和GET请求怎么传递和接收解析参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
      99+
      2022-10-19
    • 怎么用Python爬虫搞定发送中文HTTP请求头
      本篇内容主要讲解“怎么用Python爬虫搞定发送中文HTTP请求头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python爬虫搞定发送中文HTTP请求头”吧!有时需要将HTTP请求头的值...
      99+
      2023-06-15
    • web容器是怎么解析http报文的
      本篇内容主要讲解“web容器是怎么解析http报文的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web容器是怎么解析http报文的”吧! 摘要http报文其...
      99+
      2022-10-19
    • node.js中怎么利用express解析post请求
      node.js中怎么利用express解析post请求,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、www-form-urlencoded...
      99+
      2022-10-19
    • SpringBoot @PostMapping接收HTTP请求的流数据问题怎么解决
      这篇文章主要讲解了“SpringBoot @PostMapping接收HTTP请求的流数据问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot ...
      99+
      2023-07-05
    • 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
      标准Http协议支持六种请求方法,即: GET POST PUT Delete HEAD Options        但其实我们大部分情况下只用到了GET和POST。如果想设计一...
      99+
      2023-06-04
    • 怎么理解Python Django请求和响应对象
      本篇内容主要讲解“怎么理解Python Django请求和响应对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Python Django请求和响应对象”吧!Django请求和响应对象D...
      99+
      2023-06-25
    • 怎么使用事务码SMICM分析ABAP代码发起的HTTP请求的错误
      这篇文章主要为大家展示了“怎么使用事务码SMICM分析ABAP代码发起的HTTP请求的错误”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用事务码SMICM分析ABAP代码发起的HTTP请求...
      99+
      2023-06-02
    • python线程池并发请求数据问题怎么解决
      在Python中,可以使用concurrent.futures模块中的ThreadPoolExecutor类来创建线程池,并发处理请...
      99+
      2023-10-26
      python
    • Python怎么将内容进行base64编码与解码
      这篇文章主要讲解了“Python怎么将内容进行base64编码与解码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么将内容进行base64编码与解码”吧!一、需求说明需要使用P...
      99+
      2023-07-05
    • php表格内容乱码怎么办?(解决方法浅析)
      PHP表格内容乱码怎么办?随着互联网的快速发展,PHP作为一种经典的Web开发语言在网络应用程序中得到了广泛应用。然而,在使用PHP制作表格时,有时会出现数据内容乱码的情况,这不仅影响了网站的美观性,也影响了用户使用的舒适度。那么,如何解决...
      99+
      2023-05-14
    • Java怎么解析html中的内容并存到数据库
      这篇文章主要讲解了“Java怎么解析html中的内容并存到数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么解析html中的内容并存到数据库”吧!准备工作我选用的是使用jsou...
      99+
      2023-07-05
    • Retrofit网络请求框架之注解解析和动态代理方法怎么使用
      本篇内容介绍了“Retrofit网络请求框架之注解解析和动态代理方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Retrofit是...
      99+
      2023-07-05
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作