代码速记:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#encoding: utf-8
#author: walker
#date: 2017-07-24
#summary: 回显http头,可用于匿名度检测
#sys.version: '3.5.2 (default, Nov 17 2016, 17:05:23) \n[GCC 5.4.0 20160609]'
import argparse
from colored import fg, bg, attr
from http.server import HTTPServer, BaseHTTPRequestHandler
class EchoHTTPHandler(BaseHTTPRequestHandler):
    #将请求头包装成html,便于返回给http客户端
    def text_to_html(self, req_head):
        html = '<html><head><title>Echo HTTP Header</title></head>' 
        html += '<body><div>'
        html += '<font color="blue">%s - %s - %s</font><br/><br/>' % (self.client_address, self.request_version, self.path)
        for line in req_head.split('\n'):
            line = line.strip()
            if line.startswith('Via:'or line.startswith('X-Forwarded-For:'):
                line = '<font color="red">%s</font><br/>' % line
            else:
                line = '<font color="black">%s</font><br/>' % line
            html += line
        html += '</div></body></html>'
        return html
    #响应get请求,打印http头,并返回给http客户端
    def do_GET(self):
        print('%s - %s - %s' % (self.client_address, self.request_version, self.path))
        print(type(self.client_address))
        print('### request headers ###')
        req_head = str(self.headers)
        for line in req_head.split('\n'):
            line = line.strip()
            if line.startswith('Via:'or line.startswith('X-Forwarded-For:'):
                line = '%s%s%s' % (fg('red'), line, attr('reset'))
            print(line)
        self.send_response(200)
        self.end_headers()
        self.wfile.write(self.text_to_html(req_head).encode('utf8'))
     
         
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Echo HTTP server.')
    parser.add_argument('-a''--address'help='default: 0.0.0.0')
    parser.add_argument('-p''--port'help='default: 8080'type=int)
    args = parser.parse_args()
    server = HTTPServer((args.address or '0.0.0.0', args.port or 8080), EchoHTTPHandler)
    server.serve_forever()

【http json 回显】

以下代码 copy 自:https://gist.github.com/bsingr/a5ef6834524e82270154a9a72950c842,略有改动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
  
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
import json
class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = urlparse(self.path)
        self.send_response(200)
        self.end_headers()
        self.wfile.write(json.dumps({
            'method'self.command,
            'path'self.path,
            'real_path': parsed_path.query,
            'query': parsed_path.query,
            'request_version'self.request_version,
            'protocol_version'self.protocol_version
        }).encode())
        return
    def do_POST(self):
        #content_len = int(self.headers.getheader('content-length'))
        content_len = int(self.headers['Content-Length'])
        post_body = self.rfile.read(content_len)
        data = json.loads(post_body)
        parsed_path = urlparse(self.path)
        self.send_response(200)
        self.end_headers()
        self.wfile.write(json.dumps({
            'method'self.command,
            'path'self.path,
            'real_path': parsed_path.query,
            'query': parsed_path.query,
            'request_version'self.request_version,
            'protocol_version'self.protocol_version,
            'body': data
        }).encode())
        return
if __name__ == '__main__':
    server = HTTPServer(('localhost'8000), RequestHandler)
    print('Starting server at http://localhost:8000')
    server.serve_forever()

相关阅读:

1、http.server — HTTP servers

2、colored

*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1950505如需转载请自行联系原作者

RQSLT

http 请求头回显相关推荐

  1. SpringBoot中使用thymeleaf时ajax请求不能回显消息

    场景 在SpringBoot项目中使用thymeleaf模板时,在js文件中使用ajax提交表单 不能成功回显消息. 实现 修改为 html中: <button id="parseBt ...

  2. SpringBoot+MyBatisPlus实现前端传递时间查询条件ajax请求后台并回显数据流程整理

    场景 前端时间选择控件,选择时间后点击搜索,请求后台数据,后台根据时间查询数据库中 一天的记录数并回显给前端,前端进行显示. 实现 前端页面代码(部分) <div class="ibo ...

  3. ssm 转发请求_springmvc(重定向和请求转发、数据的接收和回显)

    1.请求转发 (1)直接书写要转发的页面: @Controller public class HelloController{ @RequestMapping("/hello") ...

  4. ping回显请求超时time out故障解决过程

    一天,一个新同事找来,说要跨网段调测一个sip注册语音设备,测试网络互通性发现不行,现象是公司局域网的205网段192.168.205.0/24的pc去ping209网段192.168.209.0/2 ...

  5. icmp回复报文_如果目标主机阻塞了,ICMP回显请求报文,我们可以

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:如果目标主机阻塞了,ICMP回显请求报文,我们可以通过类推荐回答:这种机制就是我们通常所用的ping命令来检测目标主机是否可以pin ...

  6. SpringMVC3----@Controller注解、RestFul风格的讲解和应用、SpringMVC的接受请求参数、网页跳转方式和数据回显、乱码问题

    目录 7 Controller类的写法 7.1 继承Controller接口 7.2 一个简单通过@Controller注解实现的程序. 7.3 @RequestMapping 8 RestFul风格 ...

  7. 重定向转发,接收请求参数及数据回显-P11,12

    重定向和转发: 我们的实现本身就是转发 . 想删掉视图解析器的话,就需要在return把路径写全 重定向就改为redirect:而且重定向不走视图解析器,因为是新的请求,新的URL. 接收请求参数: ...

  8. ping一个地址回显无法访问目的主机,然后显示请求超时time out问题分析

    ping一个地址回显无法访问目的主机,然后显示time out问题分析 ping一个设备地址172.31.232.200,发现先回显无法访问目的主机,然后显示time out. 已知pc安装有usb网 ...

  9. Http 请求头中的 Proxy-Connection

    平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...

  10. element显示服务器的图片,Vue+ElementUI+SpringMVC实现图片上传和回显

    Vue+ElementUI+SpringMVC实现图片上传和table回显 而我们也常遇到表单中包含图片上传的需求,并且需要在table中显示图片,所以这里我就讲一下结合后端的SpringMVC框架如 ...

最新文章

  1. PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等
  2. 云炬Android开发笔记 17商品详情功能开发
  3. 微分方程_微分方程 | 线性微分方程组的求解(上)
  4. mysql setup w_MySql的安装及配置详细指引!
  5. c++实现web服务框架
  6. 掌握 git reset 使用
  7. 打造最舒适的webview调试环境 1
  8. sha256是什么算法,sha256的安全性,sha256算法详解
  9. DSP SRIO接口认识
  10. 我的Qt作品(11)使用Qt+OpenCV实现一个带旋转角度的NCC灰度模板匹配演示软件
  11. 体积光渲染——SRP实现
  12. 国际贸易基础(二)备货
  13. vs以管理员身份运行
  14. visio设置图片默认大小_教大家Visio怎么随意调节图形的大小
  15. 【保研】2021/2022复旦计算机夏令营/预推免面试
  16. NiFi Processors之PutSQL
  17. 如何通过自助数据分析实现精准营销?
  18. 游戏引擎开发技术栈总结(自用)
  19. 使用TypeScript和NativeScript创建Weather App
  20. 百度js 检测输入法_百度快照是什么意思,如何删除百度快照

热门文章

  1. i++,++i 作为参数
  2. 去掉表中字段空的空格或换行符
  3. api.execScript
  4. SAS学习经验总结分享:篇五-过程步的应用
  5. 无法安装数据库关系图支持对象的解决方法
  6. 【转】浅论ViewState及其与Session的关系
  7. JS操作iframe元素
  8. PIE SDK波谱运算
  9. 《OKR工作法》读书笔记(转)
  10. WPF 学习笔记(十二)