http請(qǐng)求頭回顯-創(chuàng)新互聯(lián)

代碼速記:

創(chuàng)新互聯(lián)建站專(zhuān)注骨干網(wǎng)絡(luò)服務(wù)器租用10余年,服務(wù)更有保障!服務(wù)器租用,資陽(yáng)主機(jī)托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問(wèn)。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專(zhuān)屬高性能服務(wù)器。
#encoding: utf-8
#author: walker
#date: 2017-07-24
#summary: 回顯http頭,可用于匿名度檢測(cè)
#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):
    #將請(qǐng)求頭包裝成html,便于返回給http客戶(hù)端
    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

    #響應(yīng)get請(qǐng)求,打印http頭,并返回給http客戶(hù)端
    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,略有改動(dòng)。

#!/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()

相關(guān)閱讀:

1、http.server — HTTP servers

2、colored

*** walker ***

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:http請(qǐng)求頭回顯-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://muchs.cn/article26/dpehjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站改版搜索引擎優(yōu)化、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管