代码速记:

#encoding:utf-8#author:walker#date:2017-07-24#summary:回显http头,可用于匿名度检测#sys.version:'3.5.2(default,Nov172016,17:05:23)\n[GCC5.4.020160609]'importargparsefromcoloredimportfg,bg,attrfromhttp.serverimportHTTPServer,BaseHTTPRequestHandlerclassEchoHTTPHandler(BaseHTTPRequestHandler):#将请求头包装成html,便于返回给http客户端deftext_to_html(self,req_head):html='<html><head><title>EchoHTTPHeader</title></head>'html+='<body><div>'html+='<fontcolor="blue">%s-%s-%s</font><br/><br/>'%(self.client_address,self.request_version,self.path)forlineinreq_head.split('\n'):line=line.strip()ifline.startswith('Via:')orline.startswith('X-Forwarded-For:'):line='<fontcolor="red">%s</font><br/>'%lineelse:line='<fontcolor="black">%s</font><br/>'%linehtml+=linehtml+='</div></body></html>'returnhtml#响应get请求,打印http头,并返回给http客户端defdo_GET(self):print('%s-%s-%s'%(self.client_address,self.request_version,self.path))print(type(self.client_address))print('###requestheaders###')req_head=str(self.headers)forlineinreq_head.split('\n'):line=line.strip()ifline.startswith('Via:')orline.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='EchoHTTPserver.')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.addressor'0.0.0.0',args.portor8080),EchoHTTPHandler)server.serve_forever()


【http json 回显】

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

#!/usr/bin/envpython3fromhttp.serverimportBaseHTTPRequestHandler,HTTPServerfromurllib.parseimporturlparseimportjsonclassRequestHandler(BaseHTTPRequestHandler):defdo_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())returndefdo_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())returnif__name__=='__main__':server=HTTPServer(('localhost',8000),RequestHandler)print('Startingserverathttp://localhost:8000')server.serve_forever()


相关阅读:

1、http.server — HTTP servers

2、colored


*** walker ***