From a8b1db926b0d197a87b6f2f5fb8928638310a2af Mon Sep 17 00:00:00 2001 From: monosans Date: Mon, 2 Jan 2023 00:09:55 +0300 Subject: [PATCH] Refactor & improve output --- README.md | 6 +- proxy_scraper_checker/__init__.py | 0 proxy_scraper_checker/__main__.py | 45 ++++ proxy_scraper_checker/folder.py | 22 ++ proxy_scraper_checker/proxy.py | 53 ++++ .../proxy_scraper_checker.py | 242 +++++++----------- proxy_scraper_checker/sort.py | 13 + screenshot.png | Bin 19884 -> 48910 bytes start.cmd | 5 +- start.sh | 3 +- 10 files changed, 230 insertions(+), 159 deletions(-) create mode 100644 proxy_scraper_checker/__init__.py create mode 100644 proxy_scraper_checker/__main__.py create mode 100644 proxy_scraper_checker/folder.py create mode 100644 proxy_scraper_checker/proxy.py rename main.py => proxy_scraper_checker/proxy_scraper_checker.py (65%) mode change 100755 => 100644 create mode 100644 proxy_scraper_checker/sort.py diff --git a/README.md b/README.md index 16028df..7233a94 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ HTTP, SOCKS4, SOCKS5 proxies scraper and checker. - Supports determining the geolocation of the proxy exit node. - Can determine if a proxy is anonymous. -For a version that uses Python's built-in `logging` instead of [rich](https://github.com/willmcgugan/rich), see the [simple-output](https://github.com/monosans/proxy-scraper-checker/tree/simple-output) branch. - You can get proxies obtained using this script in [monosans/proxy-list](https://github.com/monosans/proxy-list). ## Installation and usage @@ -24,8 +22,8 @@ You can get proxies obtained using this script in [monosans/proxy-list](https:// - On Unix-like OS run `start.sh` - Manual: 1. `cd` into the unpacked folder - 1. Install dependencies with the command `python -m pip install -U -r requirements.txt` - 1. Run with the command `python main.py` + 1. Install dependencies with the command `python -m pip install -U --no-cache-dir --disable-pip-version-check pip setuptools wheel; python -m pip install -U --no-cache-dir --disable-pip-version-check -r requirements.txt` + 1. Run with the command `python -m proxy_scraper_checker` ## Folders description diff --git a/proxy_scraper_checker/__init__.py b/proxy_scraper_checker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/proxy_scraper_checker/__main__.py b/proxy_scraper_checker/__main__.py new file mode 100644 index 0000000..5d0396a --- /dev/null +++ b/proxy_scraper_checker/__main__.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +import asyncio +import logging +import sys + +import rich.traceback +from rich.console import Console +from rich.logging import RichHandler + + +def install_uvloop() -> None: + if sys.implementation.name == "cpython" and sys.platform in { + "darwin", + "linux", + }: + try: + import uvloop + except ImportError: + pass + else: + uvloop.install() + + +def setup_logging(console: Console) -> None: + rich.traceback.install(console=console) + logging.basicConfig( + level=logging.INFO, + format="%(message)s", + handlers=[ + RichHandler(console=console, show_path=False, rich_tracebacks=True) + ], + ) + + +if __name__ == "__main__": + install_uvloop() + + console = Console() + setup_logging(console) + + from .proxy_scraper_checker import ProxyScraperChecker + + psc = ProxyScraperChecker.from_ini("config.ini", console=console) + asyncio.run(psc.run()) diff --git a/proxy_scraper_checker/folder.py b/proxy_scraper_checker/folder.py new file mode 100644 index 0000000..9512ec7 --- /dev/null +++ b/proxy_scraper_checker/folder.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import rmtree + + +class Folder: + __slots__ = ("for_anonymous", "for_geolocation", "path") + + def __init__(self, *, path: Path, folder_name: str) -> None: + self.path = path / folder_name + self.for_anonymous = "anon" in folder_name + self.for_geolocation = "geo" in folder_name + + def remove(self) -> None: + try: + rmtree(self.path) + except FileNotFoundError: + pass + + def create(self) -> None: + self.path.mkdir(parents=True, exist_ok=True) diff --git a/proxy_scraper_checker/proxy.py b/proxy_scraper_checker/proxy.py new file mode 100644 index 0000000..a117719 --- /dev/null +++ b/proxy_scraper_checker/proxy.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +import asyncio +from time import perf_counter + +from aiohttp import ClientSession +from aiohttp_socks import ProxyConnector + + +class Proxy: + __slots__ = ( + "geolocation", + "ip", + "is_anonymous", + "socket_address", + "timeout", + ) + + def __init__(self, *, socket_address: str, ip: str) -> None: + """ + Args: + socket_address: ip:port + """ + self.socket_address = socket_address + self.ip = ip + + async def check( + self, *, sem: asyncio.Semaphore, proto: str, timeout: float + ) -> None: + async with sem: + proxy_url = f"{proto}://{self.socket_address}" + start = perf_counter() + async with ProxyConnector.from_url(proxy_url) as connector: + async with ClientSession(connector=connector) as session: + async with session.get( + "http://ip-api.com/json/?fields=8217", + timeout=timeout, + raise_for_status=True, + ) as response: + data = await response.json() + self.timeout = perf_counter() - start + self.is_anonymous = self.ip != data["query"] + self.geolocation = "|{}|{}|{}".format( + data["country"], data["regionName"], data["city"] + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Proxy): + return NotImplemented + return self.socket_address == other.socket_address + + def __hash__(self) -> int: + return hash(self.socket_address) diff --git a/main.py b/proxy_scraper_checker/proxy_scraper_checker.py old mode 100755 new mode 100644 similarity index 65% rename from main.py rename to proxy_scraper_checker/proxy_scraper_checker.py index 3c49b58..74dbfa9 --- a/main.py +++ b/proxy_scraper_checker/proxy_scraper_checker.py @@ -1,100 +1,43 @@ -#!/usr/bin/env python3 from __future__ import annotations import asyncio +import logging import re -import sys from configparser import ConfigParser from pathlib import Path from random import shuffle -from shutil import rmtree -from time import perf_counter -from typing import Callable, Dict, List, Optional, Set, Tuple, Union +from typing import ( + Callable, + Dict, + List, + Optional, + Set, + Tuple, + Type, + TypeVar, + Union, +) from aiohttp import ClientSession -from aiohttp_socks import ProxyConnector from rich.console import Console from rich.progress import ( BarColumn, MofNCompleteColumn, Progress, TaskID, - TaskProgressColumn, TextColumn, ) from rich.table import Table +from . import sort +from .folder import Folder +from .proxy import Proxy -class Proxy: - __slots__ = ( - "geolocation", - "ip", - "is_anonymous", - "socket_address", - "timeout", - ) +logger = logging.getLogger(__name__) - def __init__(self, *, socket_address: str, ip: str) -> None: - """ - Args: - socket_address: ip:port - """ - self.socket_address = socket_address - self.ip = ip - - async def check( - self, *, sem: asyncio.Semaphore, proto: str, timeout: float - ) -> None: - async with sem: - proxy_url = f"{proto}://{self.socket_address}" - start = perf_counter() - async with ProxyConnector.from_url(proxy_url) as connector: - async with ClientSession(connector=connector) as session: - async with session.get( - "http://ip-api.com/json/?fields=8217", - timeout=timeout, - raise_for_status=True, - ) as response: - data = await response.json() - self.timeout = perf_counter() - start - self.is_anonymous = self.ip != data["query"] - self.geolocation = "|{}|{}|{}".format( - data["country"], data["regionName"], data["city"] - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Proxy): - return NotImplemented - return self.socket_address == other.socket_address - - def __hash__(self) -> int: - return hash(self.socket_address) - - -class Folder: - __slots__ = ("for_anonymous", "for_geolocation", "path") - - def __init__(self, *, path: Path, folder_name: str) -> None: - self.path = path / folder_name - self.for_anonymous = "anon" in folder_name - self.for_geolocation = "geo" in folder_name - - def remove(self) -> None: - try: - rmtree(self.path) - except FileNotFoundError: - pass - - def create(self) -> None: - self.path.mkdir(parents=True, exist_ok=True) - - -def timeout_sort_key(proxy: Proxy) -> float: - return proxy.timeout - - -def natural_sort_key(proxy: Proxy) -> Tuple[int, ...]: - return tuple(map(int, proxy.socket_address.replace(":", ".").split("."))) +TProxyScraperChecker = TypeVar( + "TProxyScraperChecker", bound="ProxyScraperChecker" +) class ProxyScraperChecker: @@ -197,6 +140,45 @@ class ProxyScraperChecker: self.console = console or Console() self.sem = asyncio.Semaphore(max_connections) + @classmethod + def from_ini( + cls: Type[TProxyScraperChecker], + file_name: str, + *, + console: Optional[Console] = None, + ) -> TProxyScraperChecker: + cfg = ConfigParser(interpolation=None) + cfg.read(file_name, encoding="utf-8") + general = cfg["General"] + folders = cfg["Folders"] + http = cfg["HTTP"] + socks4 = cfg["SOCKS4"] + socks5 = cfg["SOCKS5"] + return cls( + timeout=general.getfloat("Timeout", 10), + max_connections=general.getint("MaxConnections", 900), + sort_by_speed=general.getboolean("SortBySpeed", True), + save_path=general.get("SavePath", ""), + proxies=folders.getboolean("proxies", True), + proxies_anonymous=folders.getboolean("proxies_anonymous", True), + proxies_geolocation=folders.getboolean( + "proxies_geolocation", True + ), + proxies_geolocation_anonymous=folders.getboolean( + "proxies_geolocation_anonymous", True + ), + http_sources=http.get("Sources") + if http.getboolean("Enabled", True) + else None, + socks4_sources=socks4.get("Sources") + if socks4.getboolean("Enabled", True) + else None, + socks5_sources=socks5.get("Sources") + if socks5.getboolean("Enabled", True) + else None, + console=console, + ) + async def fetch_source( self, *, @@ -218,11 +200,11 @@ class ProxyScraperChecker: status = response.status text = await response.text() except Exception as e: - msg = f"{source} | Error" + msg = source exc_str = str(e) if exc_str and exc_str != source: msg += f": {exc_str}" - self.console.print(msg) + logger.error(msg) else: proxies = tuple(self.regex.finditer(text)) if proxies: @@ -235,7 +217,7 @@ class ProxyScraperChecker: msg = f"{source} | No proxies found" if status != 200: msg += f" | Status code {status}" - self.console.print(msg) + logger.warning(msg) progress.update(task, advance=1) async def check_proxy( @@ -247,9 +229,7 @@ class ProxyScraperChecker: except Exception as e: # Too many open files if isinstance(e, OSError) and e.errno == 24: - self.console.print( - "[red]Please, set MAX_CONNECTIONS to lower value." - ) + logging.error("Please, set MAX_CONNECTIONS to lower value.") self.proxies[proto].remove(proxy) progress.update(task, advance=1) @@ -306,7 +286,7 @@ class ProxyScraperChecker: def save_proxies(self) -> None: """Delete old proxies and save new ones.""" - sorted_proxies = self.sorted_proxies.items() + sorted_proxies = self.get_sorted_proxies().items() for folder in self.all_folders: folder.remove() for folder in self.enabled_folders: @@ -322,11 +302,35 @@ class ProxyScraperChecker: file = folder.path / f"{proto}.txt" file.write_text(text, encoding="utf-8") - async def main(self) -> None: - with self._progress as progress: + async def run(self) -> None: + with self._get_progress_bar() as progress: await self.fetch_all_sources(progress) await self.check_all_proxies(progress) + table = self._get_results_table() + self.console.print(table) + + self.save_proxies() + logger.info( + "Proxy folders have been created in the %s folder." + + "\nThank you for using proxy-scraper-checker :)", + self.path.resolve(), + ) + + def get_sorted_proxies(self) -> Dict[str, List[Proxy]]: + key: Union[ + Callable[[Proxy], float], Callable[[Proxy], Tuple[int, ...]] + ] = ( + sort.timeout_sort_key + if self.sort_by_speed + else sort.natural_sort_key + ) + return { + proto: sorted(proxies, key=key) + for proto, proxies in self.proxies.items() + } + + def _get_results_table(self) -> Table: table = Table() table.add_column("Protocol", style="cyan") table.add_column("Working", style="magenta") @@ -338,76 +342,12 @@ class ProxyScraperChecker: table.add_row( proto.upper(), f"{working} ({percentage:.1f}%)", str(total) ) - self.console.print(table) + return table - self.save_proxies() - self.console.print( - "[green]Proxy folders have been created in the " - + f"{self.path.resolve()} folder." - + "\nThank you for using proxy-scraper-checker :)" - ) - - @property - def sorted_proxies(self) -> Dict[str, List[Proxy]]: - key: Union[ - Callable[[Proxy], float], Callable[[Proxy], Tuple[int, ...]] - ] = (timeout_sort_key if self.sort_by_speed else natural_sort_key) - return { - proto: sorted(proxies, key=key) - for proto, proxies in self.proxies.items() - } - - @property - def _progress(self) -> Progress: + def _get_progress_bar(self) -> Progress: return Progress( TextColumn("[progress.description]{task.description}"), BarColumn(), - TaskProgressColumn(), MofNCompleteColumn(), console=self.console, ) - - -async def main() -> None: - cfg = ConfigParser(interpolation=None) - cfg.read("config.ini", encoding="utf-8") - general = cfg["General"] - folders = cfg["Folders"] - http = cfg["HTTP"] - socks4 = cfg["SOCKS4"] - socks5 = cfg["SOCKS5"] - await ProxyScraperChecker( - timeout=general.getfloat("Timeout", 10), - max_connections=general.getint("MaxConnections", 900), - sort_by_speed=general.getboolean("SortBySpeed", True), - save_path=general.get("SavePath", ""), - proxies=folders.getboolean("proxies", True), - proxies_anonymous=folders.getboolean("proxies_anonymous", True), - proxies_geolocation=folders.getboolean("proxies_geolocation", True), - proxies_geolocation_anonymous=folders.getboolean( - "proxies_geolocation_anonymous", True - ), - http_sources=http.get("Sources") - if http.getboolean("Enabled", True) - else None, - socks4_sources=socks4.get("Sources") - if socks4.getboolean("Enabled", True) - else None, - socks5_sources=socks5.get("Sources") - if socks5.getboolean("Enabled", True) - else None, - ).main() - - -if __name__ == "__main__": - if sys.implementation.name == "cpython" and sys.platform in { - "darwin", - "linux", - }: - try: - import uvloop - except ImportError: - pass - else: - uvloop.install() - asyncio.run(main()) diff --git a/proxy_scraper_checker/sort.py b/proxy_scraper_checker/sort.py new file mode 100644 index 0000000..d542d8f --- /dev/null +++ b/proxy_scraper_checker/sort.py @@ -0,0 +1,13 @@ +from __future__ import annotations + +from typing import Tuple + +from .proxy import Proxy + + +def timeout_sort_key(proxy: Proxy) -> float: + return proxy.timeout + + +def natural_sort_key(proxy: Proxy) -> Tuple[int, ...]: + return tuple(map(int, proxy.socket_address.replace(":", ".").split("."))) diff --git a/screenshot.png b/screenshot.png index c4580a90a0b728d06faea199c59ada206dac9cbf..31e2cee7cd06b9948a0f3a82f24d6b792d39ff19 100644 GIT binary patch literal 48910 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 diff --git a/start.cmd b/start.cmd index b5f75c6..baf290f 100755 --- a/start.cmd +++ b/start.cmd @@ -1,3 +1,4 @@ -python -m pip install -U -r requirements.txt -python main.py +python -m pip install -U --no-cache-dir --disable-pip-version-check pip setuptools wheel +python -m pip install -U --no-cache-dir --disable-pip-version-check -r requirements.txt +python -m proxy_scraper_checker Pause diff --git a/start.sh b/start.sh index e3fb8c7..41780cf 100755 --- a/start.sh +++ b/start.sh @@ -1,3 +1,2 @@ #!/bin/sh -python -m pip install -U -r requirements.txt -python main.py +python -m pip install -U --no-cache-dir --disable-pip-version-check pip setuptools wheel && python -m pip install -U --no-cache-dir --disable-pip-version-check -r requirements.txt && python -m proxy_scraper_checker