代码速记:
#encoding: utf-8 #author: walker #date: 2017-07-24 #summary: 回显http头,可用于匿名度检测 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()
相关阅读:
2、colored
*** walker ***
本文出自 “walker的流水账” 博客,请务必保留此出处http://walkerqt.blog.51cto.com/1310630/1950505
原文:http://walkerqt.blog.51cto.com/1310630/1950505