Netflix-videos-downloader/helpers/vpn.py

136 wiersze
3.9 KiB
Python

import os
import requests
import sys
import random
import logging
class connect(object):
def __init__(self, code):
self.code = code.lower()
self.logger = logging.getLogger(__name__)
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
}
def nordVPN(self):
nordvpn_codes = {
"al": "2",
"ar": "10",
"au": "13",
"at": "14",
"be": "21",
"ba": "27",
"br": "30",
"bg": "33",
"ca": "38",
"cl": "43",
"cr": "52",
"hr": "54",
"cy": "56",
"cz": "57",
"dk": "58",
"eg": "64",
"ee": "68",
"fi": "73",
"fr": "74",
"ge": "80",
"de": "81",
"gr": "84",
"hk": "97",
"hu": "98",
"is": "99",
"in": "100",
"id": "101",
"ie": "104",
"il": "105",
"it": "106",
"jp": "108",
"lv": "119",
"lu": "126",
"my": "131",
"mx": "140",
"md": "142",
"nl": "153",
"nz": "156",
"mk": "128",
"no": "163",
"ro": "179",
"pl": "174",
"si": "197",
"za": "200",
"kr": "114",
"rs": "192",
"sg": "195",
"sk": "196",
"es": "202",
"se": "208",
"ch": "209",
"tw": "211",
"th": "214",
"tr": "220",
"ua": "225",
"ae": "226",
"gb": "227",
"us": "228",
"vn": "234",
"uk": "227",
}
nord_proxy = {}
if nordvpn_codes.get(self.code):
resp = requests.get(
url="https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters={%22country_id%22:"
+ nordvpn_codes.get(self.code)
+ "}",
headers=self.headers,
)
nord_proxy = resp.json()[0]["hostname"]
else:
self.logger.info(
self.code
+ " : not listed in country codes, read country.doc for more info"
)
return nord_proxy
def load_privatevpn(self):
html_file = "html.html"
hosts = []
resp = requests.get(
"https://privatevpn.com/serverlist/", stream=True, headers=self.headers
)
resp = str(resp.text)
resp = resp.replace("<br>", "")
with open(html_file, "w", encoding="utf8") as file:
file.write(resp)
with open(html_file, "r") as file:
text = file.readlines()
if os.path.exists(html_file):
os.remove(html_file)
for p in text:
if ".pvdata.host" in p:
hosts.append(p.strip())
return hosts
def privateVPN(self):
private_proxy = {}
private_hosts = self.load_privatevpn()
self.logger.debug("private_hosts: {}".format(private_hosts))
search_host = [host for host in private_hosts if host[:2] == self.code]
if not search_host == []:
self.logger.info(f"Founded {str(len(search_host))} Proxies")
for n, p in enumerate(search_host):
self.logger.info(f"[{str(n+1)}] {p}")
inp = input("\nEnter Proxy Number, or Hit Enter for random one: ").strip()
if inp == "":
return random.choice(search_host)
private_proxy = search_host[int(inp) - 1]
else:
self.logger.info(f"no Proxies Found, you may entered wrong code, or search failed!...")
return private_proxy