|
@@ -3,7 +3,7 @@ import aiohttp
|
|
|
from loguru import logger
|
|
|
from proxypool.schemas import Proxy
|
|
|
from proxypool.storages.redis import RedisClient
|
|
|
-from proxypool.setting import TEST_TIMEOUT, TEST_BATCH, TEST_URL, TEST_VALID_STATUS
|
|
|
+from proxypool.setting import TEST_TIMEOUT, TEST_BATCH, TEST_URL, TEST_VALID_STATUS, TEST_ANONYMOUS
|
|
|
from aiohttp import ClientProxyConnectionError, ServerDisconnectedError, ClientOSError, ClientHttpProxyError
|
|
|
from asyncio import TimeoutError
|
|
|
|
|
@@ -14,7 +14,8 @@ EXCEPTIONS = (
|
|
|
TimeoutError,
|
|
|
ServerDisconnectedError,
|
|
|
ClientOSError,
|
|
|
- ClientHttpProxyError
|
|
|
+ ClientHttpProxyError,
|
|
|
+ AssertionError
|
|
|
)
|
|
|
|
|
|
|
|
@@ -39,6 +40,18 @@ class Tester(object):
|
|
|
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session:
|
|
|
try:
|
|
|
logger.debug(f'testing {proxy.string()}')
|
|
|
+ # if TEST_ANONYMOUS is True, make sure that
|
|
|
+ # the proxy has the effect of hiding the real IP
|
|
|
+ if TEST_ANONYMOUS:
|
|
|
+ url = 'https://httpbin.org/ip'
|
|
|
+ async with session.get(url, timeout=TEST_TIMEOUT) as response:
|
|
|
+ resp_json = await response.json()
|
|
|
+ origin_ip = resp_json['origin']
|
|
|
+ async with session.get(url, proxy=f'http://{proxy.string()}', timeout=TEST_TIMEOUT) as response:
|
|
|
+ resp_json = await response.json()
|
|
|
+ anonymous_ip = resp_json['origin']
|
|
|
+ assert origin_ip != anonymous_ip
|
|
|
+ assert proxy.host == anonymous_ip
|
|
|
async with session.get(TEST_URL, proxy=f'http://{proxy.string()}', timeout=TEST_TIMEOUT,
|
|
|
allow_redirects=False) as response:
|
|
|
if response.status in TEST_VALID_STATUS:
|