swiftshadow 2.0.0__tar.gz → 2.0.1__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/PKG-INFO +1 -1
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/pyproject.toml +1 -1
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/validator.py +47 -1
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.github/CODEOWNERS +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.github/workflows/pyfix.yml +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.github/workflows/python-publish-manual.yml +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.github/workflows/python-publish.yml +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.gitignore +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/.python-version +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/LICENSE +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/README.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/404.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Classes/proxyInterface/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Classes/quickProxy/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Models/cache-data/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Models/provider/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Models/proxy/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Getting Started/Using-Proxy-Class/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Getting Started/Using-QuickProxy/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Getting Started/examples/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Use Swiftshadow with/AWS-Lambda/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Use Swiftshadow with/https/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/Use Swiftshadow with/requests/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/_mkdocstrings.css +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/images/favicon.png +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/bundle.60a45f97.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/bundle.60a45f97.min.js.map +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ar.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.da.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.de.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.du.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.el.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.es.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.fi.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.fr.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.he.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.hi.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.hu.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.hy.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.it.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ja.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.jp.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.kn.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ko.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.multi.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.nl.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.no.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.pt.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ro.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ru.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.sa.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.sv.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.ta.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.te.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.th.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.tr.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.vi.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.zh.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/tinyseg.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/wordcut.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/workers/search.f8cc74c7.min.js +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/workers/search.f8cc74c7.min.js.map +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/logo.png +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/stylesheets/main.a40c8224.min.css +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/stylesheets/main.a40c8224.min.css.map +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/stylesheets/palette.06af60db.min.css +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/stylesheets/palette.06af60db.min.css.map +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/objects.inv +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/providers/index.html +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/search/search_index.json +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/sitemap.xml +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/sitemap.xml.gz +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/API Reference/Classes/proxyInterface.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/API Reference/Classes/quickProxy.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/API Reference/Models/cache-data.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/API Reference/Models/provider.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/API Reference/Models/proxy.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Getting Started/Using-Proxy-Class.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Getting Started/Using-QuickProxy.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Getting Started/examples.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Use Swiftshadow with/AWS-Lambda.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Use Swiftshadow with/https.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/Use Swiftshadow with/requests.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/assets/logo.png +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/index.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs-src/providers.md +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/mkdocs.yml +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/setup.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/__init__.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/cache.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/classes.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/exceptions.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/helpers.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/models.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/providers.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/swiftshadow/types.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/tests/test_models.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/tests/test_proxy.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/tests/test_quickproxy.py +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/tox.ini +0 -0
- {swiftshadow-2.0.0 → swiftshadow-2.0.1}/uv.lock +0 -0
@@ -1,10 +1,47 @@
|
|
1
1
|
import asyncio
|
2
|
+
import re
|
2
3
|
|
3
4
|
import aiohttp
|
4
5
|
|
5
6
|
from swiftshadow.models import Proxy
|
6
7
|
|
7
8
|
|
9
|
+
def find_ipv4_in_string(input_string: str) -> str | None:
|
10
|
+
"""
|
11
|
+
Extract IPv4 Address from input and return the same.
|
12
|
+
|
13
|
+
Args:
|
14
|
+
input_string: Input string
|
15
|
+
|
16
|
+
Returns:
|
17
|
+
ipv4_address: If found
|
18
|
+
"""
|
19
|
+
ipv4_pattern = r"\b((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\b"
|
20
|
+
|
21
|
+
match = re.search(ipv4_pattern, input_string)
|
22
|
+
|
23
|
+
if match:
|
24
|
+
return match.group(0)
|
25
|
+
else:
|
26
|
+
return None
|
27
|
+
|
28
|
+
|
29
|
+
async def get_host_ip(async_session: aiohttp.ClientSession) -> str | None:
|
30
|
+
"""
|
31
|
+
Gets the hosts external IP for validation.
|
32
|
+
|
33
|
+
Args:
|
34
|
+
async_session: AioHTTP client session object
|
35
|
+
|
36
|
+
Returns:
|
37
|
+
text: Host IP
|
38
|
+
"""
|
39
|
+
async with async_session.get("http://checkip.amazonaws.com") as response:
|
40
|
+
text = await response.text()
|
41
|
+
ip = find_ipv4_in_string(text)
|
42
|
+
return ip
|
43
|
+
|
44
|
+
|
8
45
|
async def check_proxy(async_session: aiohttp.ClientSession, proxy: Proxy) -> str:
|
9
46
|
"""
|
10
47
|
Check one proxy abject.
|
@@ -38,13 +75,22 @@ async def validate_proxies(proxies: list[Proxy]) -> list[Proxy]:
|
|
38
75
|
working_proxies: list[Proxy] = []
|
39
76
|
async with aiohttp.ClientSession() as async_session:
|
40
77
|
tasks = []
|
78
|
+
|
79
|
+
host_task = asyncio.create_task(coro=get_host_ip(async_session))
|
80
|
+
tasks.append(host_task)
|
81
|
+
|
41
82
|
for proxy in proxies:
|
42
83
|
task = asyncio.create_task(coro=check_proxy(async_session, proxy))
|
43
84
|
tasks.append(task)
|
85
|
+
|
44
86
|
results = await asyncio.gather(*tasks, return_exceptions=True)
|
87
|
+
host_ip = results[0]
|
88
|
+
results = results[1:]
|
89
|
+
|
45
90
|
for proxy, result in zip(proxies, results):
|
46
91
|
if type(result) is not str:
|
47
92
|
continue
|
48
|
-
|
93
|
+
result_ip = find_ipv4_in_string(result)
|
94
|
+
if result_ip and result_ip != host_ip:
|
49
95
|
working_proxies.append(proxy)
|
50
96
|
return working_proxies
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/API Reference/Classes/proxyInterface/index.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/workers/search.f8cc74c7.min.js
RENAMED
File without changes
|
{swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/javascripts/workers/search.f8cc74c7.min.js.map
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{swiftshadow-2.0.0 → swiftshadow-2.0.1}/docs/assets/stylesheets/palette.06af60db.min.css.map
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|