Я пытаюсь использовать WebProxy для подключения к www.google.com, но получаю ошибку и не знаю, как ее исправить.
Вот вывод: Необработанное исключение в потоке, запущенном Traceback (самое последнее последний вызов): файл "C: / Users / dangt / Desktop / test / test3.py", строка 134, в proxy_thread data = s.recv (MAX_DATA_RECV) ConnectionResetError: [WinError 10054] Существующее соединение было принудительно закрыто удаленный хост
Это код
def proxy_thread (conn, client_addr):
# get the request from browser
request = conn.recv(MAX_DATA_RECV)
#print(" Test " + request)
request = request.decode()
#print(" Test " + request)
if request:
# parse the first line
first_line = request.split('\n')[0]
print("Test first_line " + first_line)
#first_line = request.split('\n')
#first_line = first_line[0]
# get url
url = first_line.split(' ')[1]
print(" Test url " + url)
for i in range(0,len(BLOCKED)):
if BLOCKED[i] in url:
printout("Blacklisted",first_line,client_addr)
conn.close()
sys.exit(1)
#printout("Request",first_line,client_addr)
# print "URL:",url
# print
# find the webserver and port
http_pos = url.find("://") # find pos of ://
if (http_pos==-1):
temp = url
else:
temp = url[(http_pos+3):] # get the rest of url
port_pos = temp.find(":") # find the port pos (if any)
# find end of web server
webserver_pos = temp.find("/")
if webserver_pos == -1:
webserver_pos = len(temp)
webserver = ""
port = -1
if (port_pos==-1 or webserver_pos < port_pos): # default port
port = 80
webserver = temp[:webserver_pos]
else: # specific port
port = int((temp[(port_pos+1):])[:webserver_pos-port_pos-1])
webserver = temp[:port_pos]
try:
# create a socket to connect to the web server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((webserver, port))
s.sendto(request.encode(),(webserver,port))
#s.send(request) # send request to webserver
while 1:
# receive data from web server
data = s.recv(MAX_DATA_RECV)
if (len(data) > 0):
# send to browser
conn.send(data)
else:
break
s.close()
#conn.close()
except socket.error (message):
if s:
s.close()
if conn:
conn.close()
printout("Peer Reset",first_line,client_addr)
sys.exit(1)
else:
conn.close()
вывод показывает, что у меня ошибка при получении данных с сервера .