# coding: utf-8

# Установка модуля и обновление зависимостей.
# python3 -m pip install requests
# pip3 install urllib3==1.25

# https://docs.python-requests.org/en/latest/
# Запуск скрипта python3 request.py

import requests
import json
from http.client import responses # Библиотека для вывода сообщений для кодов.
import warnings # Библиотека для обработки предупреждений.

# Отключение предупреждений связанных с HTTPS.
warnings.filterwarnings('ignore', message='Unverified HTTPS request')

# Список используемых протоколов.
protocolData = {10: 'HTTP/1.0', 11: 'HTTP/1.1'}

from sys import argv

script, dataJson = argv

# Настройки.
configData = {"url": "", "proxy": "", "auth": "", "headers": "", "timeout": "", "returnHeaders": ""}

arrData = json.loads(dataJson)

for key in arrData:
	configData[key] = arrData[key]

# Проверка и установка настроек.
url = ''
proxy = ''
auth = ''
headers = {}
timeout = 30
returnHeaders = 0
	
if configData["url"] != '':
	url = configData["url"]
else:
	print("Error URL.")
	exit()
	
if configData["proxy"] != '':
	proxy = configData["proxy"]
else:
	print("Error proxy.")
	exit()
	
if configData["auth"] != '':
	auth = configData["auth"]
else:
	print("Error proxy auth.")
	exit()
	
if configData["headers"] != '':
	headers = configData["headers"]
	
if configData["timeout"] != '':
	timeout = configData["timeout"]
	
if configData["returnHeaders"] != '':
	returnHeaders = configData["returnHeaders"]	
	
# print(url)
# print(proxy)
# print(auth)
# print(headers)

# try:
page = requests.get(url, headers=headers, proxies={'https' : "https://"+auth+"@"+proxy}, verify=False, timeout=timeout)

# Вывод кода ответа и заголовка.
if returnHeaders != 0:
	print(protocolData[page.raw.version]+' '+str(page.status_code)+' '+responses[page.status_code])
	for key in page.headers:
		print(key+": "+page.headers[key])
	print("\n")
print(page.text)
	
# except socket.timeout:
	# print('Error timeout socket')
# finally:
	# conn.close()	