国外网站代理服务器

报考指南2022-09-06 11:05:52佚名

与c相比,中的套接字编程()特别用户友好。程序员何必害怕有关套接字的详尽信息。在中,用户有更多机会专注于应用程序层而不是网路层。在本教程中,我们将开发一个才能处理HTTP流量的简单多线程代理服务器。它将主要基于基本的套接字编程思想。

这是代理服务器的简单实现。在接出来的教程中,我们将逐渐将其开发为一个十分有用的服务器。

首先,我们将通过3个简单的步骤来完成该过程

1.创建一个传入套接字()

我们在服务器类的方式中创建一个套接字。这将为传入的联接创建一个套接字。之后,我们绑定套接字国外网站代理服务器,之后等待顾客端联接。

def __init__(self, config):
    # Shutdown on Ctrl+C
    signal.signal(signal.SIGINT, self.shutdown) 
    # Create a TCP socket
    self.serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # Re-use the socket
    self.serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    # bind the socket to a public host, and a port   
    self.serverSocket.bind((config['HOST_NAME'], config['BIND_PORT']))
    
    self.serverSocket.listen(10) # become a server socket
    self.__clients = {}

国外网站代理服务器

2.接受顾客端联接和处理

这是所有步骤中最简单但最重要的步骤。我们等待顾客的联接恳求,一旦构建成功联接,我们就将恳求分派到一个单独的线程中,使自己可用于下一个恳求。这使我们可以同时处理多个恳求,因而将服务器的性能提升了数倍。

while True:
    # Establish the connection
    (clientSocket, client_address) = self.serverSocket.accept() 
    
    d = threading.Thread(name=self._getClientName(client_address), 
    target = self.proxy_thread, args=(clientSocket, client_address))
    d.setDaemon(True)
    d.start()

3.重定向流量

代理服务器的主要功能是充当源和目标之间的中介。在这儿,我们将从源中获取数据,之后将其传递给顾客端。

1)首先,我们从接收到的恳求数据中提取URL。

# get the request from browser
request = conn.recv(config['MAX_REQUEST_LEN']) 
# parse the first line
first_line = request.split('n')[0]

国外网站代理服务器

# get url url = first_line.split(' ')[1]

2)之后,我们找到恳求的目标地址。地址是(ss,)的元组。我们将从该地址接收数据。

3)如今,我们设置到目标服务器(或远程服务器)的新联接,之后将原始恳求的副本发送到服务器。之后国外网站代理服务器,服务器将用一个响应来响应。所有响应消息都使用RFC822的通用消息格式。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.settimeout(config['CONNECTION_TIMEOUT'])
s.connect((webserver, port))
s.sendall(request)

4)之后,我们将服务器的响应重定向到顾客端。conn是与顾客端的原始联接。该响应可能小于我们在一个调用中收到的,为此,空响应表示响应结束。

while 1:
    # receive data from web server
    data = s.recv(config['MAX_REQUEST_LEN'])
    if (len(data) > 0):
        conn.send(data) # send to browser/client
    else:
        break

之后,我们适当地关掉服务器联接并进行错误处理,以确保服务器按预期工作。

怎么测试服务器?

1.在终端上运行服务器。使其保持运行并切换到您喜欢的浏览器。

2.转入浏览器的代理设置,之后将代理服务器修改为“”,并将端口修改为“12345”。

相关推荐

猜你喜欢

大家正在看

换一换