Compare commits

..

No commits in common. "104eb8d9498e08a894e0ccb118522c6cac0e8cad" and "e81319950150bfe4ee7ee3d9ed67d7018209ea11" have entirely different histories.

2 changed files with 4 additions and 22 deletions

View File

@ -6,22 +6,6 @@ import requests
def fetch_list(url): def fetch_list(url):
"""Fetches proxy list from the given URL.
The HTTP response text will be searched for `ip:port` and `username:password@ip:port`
patterns to accommodate different source list formats.
If an error occurs while fetching the list, it will be logged with WARNING
and an empty list will be returned.
Args:
url (str): The URL to fetch proxy list from.
Returns:
list: A list of proxy server addresses fetched from the URL.
If an error occurs while fetching the list, it will be logged
with WARNING and an empty list will be returned.
"""
try: try:
response = requests.get(url) response = requests.get(url)
response.raise_for_status() response.raise_for_status()
@ -30,9 +14,9 @@ def fetch_list(url):
return [] return []
proxy_regex = r"(?:\b(?:[\S]+:)?(?:[\S]+)?@\b)?(?:\d{1,3}\.){3}\d{1,3}:\d+" proxy_regex = r"(?:\b(?:[\S]+:)?(?:[\S]+)?@\b)?(?:\d{1,3}\.){3}\d{1,3}:\d+"
proxies = set(re.findall(proxy_regex, response.text)) proxies = re.findall(proxy_regex, response.text)
logging.info(f'Fetched {len(proxies)} proxies from {url}') logging.info(f'Fetched {len(proxies)} proxies from {url}')
return list(proxies) return proxies
def fetch_all(urls, max_workers=8): def fetch_all(urls, max_workers=8):

View File

@ -17,8 +17,7 @@ def start_web_server():
def test_fetch_list(): def test_fetch_list():
expected = ['127.0.0.1:9000', '127.0.0.1:9001', 'username:pa$$@word@127.0.0.1:9002'] expected = ['127.0.0.1:9000', '127.0.0.1:9001', 'username:pa$$@word@127.0.0.1:9002']
result = fetch_list('http://localhost:8888/proxies1.txt') result = fetch_list('http://localhost:8888/proxies1.txt')
for proxy in expected: assert result == expected
assert proxy in result
def test_fetch_list_fail(): def test_fetch_list_fail():
@ -30,8 +29,7 @@ def test_fetch_list_fail():
def test_fetch_list_only_valid(): def test_fetch_list_only_valid():
expected = ['127.0.0.1:9000', '127.0.0.1:9001', 'username:pa$$@word@127.0.0.1:9002'] expected = ['127.0.0.1:9000', '127.0.0.1:9001', 'username:pa$$@word@127.0.0.1:9002']
result = fetch_list('http://localhost:8888/proxies1.txt') result = fetch_list('http://localhost:8888/proxies1.txt')
for proxy in expected: assert result == expected
assert proxy in result
def test_fetch_all(): def test_fetch_all():