Http/Https代理Python实现

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

对Python感兴趣,工作之余,参照部分文档初步实现了HTTP/HTTPs代理。(代码比较凌乱,各位留情。大笑

使用Fiddler调试。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

import socket

import time

import threading
BUFSIZE=1024


class Access_to_Host(object):
         
    def handler(self,conn,addr):
        self.conn=conn
        self.addr=addr
        all_src_data,hostname,port,ssl_flag=self.get_dst_host_from_header(self.conn,self.addr)
        all_dst_data=self.get_data_from_host(hostname,port,all_src_data,ssl_flag)


        if  all_dst_data and not ssl_flag:
            #self.send_data_to_client(self.conn,all_dst_data)
            self.ssl_client_server_client(self.conn,self.conn_dst,all_dst_data)
        elif ssl_flag:
            sample_data_to_client=b"HTTP/1.0 200 Connection Established\r\n\r\n"
           # print("\nSSL_Flag-1")
            #self.send_data_to_client(self.conn,all_dst_data)
            #print("SSL_Flag-2")
            self.ssl_client_server_client(self.conn,self.conn_dst,sample_data_to_client)
            #print("\nSSL_Flag-3")
        else:
            print('pls check network. cannot get hostname:'+hostname)
        #self.conn.close()
    def ssl_client_server(self,src_conn,dst_conn):
        self.src_conn=src_conn
        self.dst_conn=dst_conn        
        while True:
            ###get data from client
            try:
                ssl_client_data=self.src_conn.recv(BUFSIZE)
            except Ex
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值