http 请求头回显
代码速记:
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 请求头回显相关推荐
- SpringBoot中使用thymeleaf时ajax请求不能回显消息
场景 在SpringBoot项目中使用thymeleaf模板时,在js文件中使用ajax提交表单 不能成功回显消息. 实现 修改为 html中: <button id="parseBt ...
- SpringBoot+MyBatisPlus实现前端传递时间查询条件ajax请求后台并回显数据流程整理
场景 前端时间选择控件,选择时间后点击搜索,请求后台数据,后台根据时间查询数据库中 一天的记录数并回显给前端,前端进行显示. 实现 前端页面代码(部分) <div class="ibo ...
- ssm 转发请求_springmvc(重定向和请求转发、数据的接收和回显)
1.请求转发 (1)直接书写要转发的页面: @Controller public class HelloController{ @RequestMapping("/hello") ...
- ping回显请求超时time out故障解决过程
一天,一个新同事找来,说要跨网段调测一个sip注册语音设备,测试网络互通性发现不行,现象是公司局域网的205网段192.168.205.0/24的pc去ping209网段192.168.209.0/2 ...
- icmp回复报文_如果目标主机阻塞了,ICMP回显请求报文,我们可以
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:如果目标主机阻塞了,ICMP回显请求报文,我们可以通过类推荐回答:这种机制就是我们通常所用的ping命令来检测目标主机是否可以pin ...
- SpringMVC3----@Controller注解、RestFul风格的讲解和应用、SpringMVC的接受请求参数、网页跳转方式和数据回显、乱码问题
目录 7 Controller类的写法 7.1 继承Controller接口 7.2 一个简单通过@Controller注解实现的程序. 7.3 @RequestMapping 8 RestFul风格 ...
- 重定向转发,接收请求参数及数据回显-P11,12
重定向和转发: 我们的实现本身就是转发 . 想删掉视图解析器的话,就需要在return把路径写全 重定向就改为redirect:而且重定向不走视图解析器,因为是新的请求,新的URL. 接收请求参数: ...
- ping一个地址回显无法访问目的主机,然后显示请求超时time out问题分析
ping一个地址回显无法访问目的主机,然后显示time out问题分析 ping一个设备地址172.31.232.200,发现先回显无法访问目的主机,然后显示time out. 已知pc安装有usb网 ...
- Http 请求头中的 Proxy-Connection
平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...
- element显示服务器的图片,Vue+ElementUI+SpringMVC实现图片上传和回显
Vue+ElementUI+SpringMVC实现图片上传和table回显 而我们也常遇到表单中包含图片上传的需求,并且需要在table中显示图片,所以这里我就讲一下结合后端的SpringMVC框架如 ...
最新文章
- PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等
- 云炬Android开发笔记 17商品详情功能开发
- 微分方程_微分方程 | 线性微分方程组的求解(上)
- mysql setup w_MySql的安装及配置详细指引!
- c++实现web服务框架
- 掌握 git reset 使用
- 打造最舒适的webview调试环境 1
- sha256是什么算法,sha256的安全性,sha256算法详解
- DSP SRIO接口认识
- 我的Qt作品(11)使用Qt+OpenCV实现一个带旋转角度的NCC灰度模板匹配演示软件
- 体积光渲染——SRP实现
- 国际贸易基础(二)备货
- vs以管理员身份运行
- visio设置图片默认大小_教大家Visio怎么随意调节图形的大小
- 【保研】2021/2022复旦计算机夏令营/预推免面试
- NiFi Processors之PutSQL
- 如何通过自助数据分析实现精准营销?
- 游戏引擎开发技术栈总结(自用)
- 使用TypeScript和NativeScript创建Weather App
- 百度js 检测输入法_百度快照是什么意思,如何删除百度快照