標籤:ip 代理 匿名度
代碼速記:
#encoding: utf-8#author: walker#date: 2017-07-24#summary: 回顯http頭,可用於匿名度檢測import argparsefrom colored import fg, bg, attrfrom http.server import HTTPServer, BaseHTTPRequestHandlerclass 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()
相關閱讀:
1、http.server — HTTP servers
2、colored
*** walker ***
本文出自 “walker的流水賬” 部落格,請務必保留此出處http://walkerqt.blog.51cto.com/1310630/1950505
http 要求標頭回顯