34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import psycopg2
|
|
import psycopg2.extras
|
|
import requests
|
|
import re
|
|
import yaml
|
|
from bs4 import BeautifulSoup
|
|
from datetime import datetime
|
|
from time import sleep
|
|
|
|
config = yaml.full_load(open("config.yaml").read())
|
|
pgconn = psycopg2.connect(dbname=config["dbname"], user=config["dbuser"], password=config["dbpassword"], host=config["dbhost"])
|
|
current_servers = []
|
|
with pgconn:
|
|
with pgconn.cursor() as curs:
|
|
curs.execute("select ip, port from proxies where proxy_type='vpngate'")
|
|
current_servers = curs.fetchall()
|
|
|
|
proxies = []
|
|
for i in range(1,3):
|
|
r = requests.get(f"https://freevpn.gg/?p={i}", headers={"User-Agent": config["user_agent"]})
|
|
data = BeautifulSoup(r.text, features="html5lib")
|
|
for ip_data in data.find_all(class_="card-box"):
|
|
ip = ip_data.find("h3").text
|
|
port = re.search("TCP\((\d+)\)", ip_data.find(class_="card-text").text)
|
|
if port and (ip, int(port[1])) not in current_servers:
|
|
proxies.append((ip, port[1], ip, "unscanned", "vpngate", datetime.now(), "vpngate proxies freevpn"))
|
|
sleep(5)
|
|
|
|
with pgconn:
|
|
with pgconn.cursor() as curs:
|
|
insert_query = """
|
|
insert into proxies (ip, port, exit_ip, status, proxy_type, submitted_at, comment)
|
|
values %s"""
|
|
psycopg2.extras.execute_values(curs, insert_query, proxies) |