首页 > 解决方案 > 如何旋转代理以在普通浏览器上使用

问题描述

我正在从事一个私人项目,我有一个代理列表,我想通过普通浏览器在每个请求或 x 时间轮换它们,我已经尝试过 proxybroker “python 语言”,但似乎太旧而且不太稳定,似乎不再受支持由开发者。请问我需要通过python或其他方式以任何其他方式提供帮助。此代码用于 proxybroker 以创建分发传入请求的本地代理服务器。

proxybroker serve --host 127.0.0.1 --port 8888 --types HTTP HTTPS --lvl High

运行本地代理服务器,将传入请求分发给外部代理。

import asyncio
import aiohttp

from proxybroker import Broker


async def get_pages(urls, proxy_url):
    tasks = [fetch(url, proxy_url) for url in urls]
    for task in asyncio.as_completed(tasks):
        url, content = await task
        print('Done! url: %s; content: %.100s' % (url, content))


async def fetch(url, proxy_url):
    resp = None
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(url, proxy=proxy_url) as response:
                resp = await response.read()
    except (aiohttp.errors.ClientOSError, aiohttp.errors.ClientResponseError,
            aiohttp.errors.ServerDisconnectedError) as e:
        print('Error. url: %s; error: %r' % (url, e))
    finally:
        return (url, resp)


def main():
    host, port = '127.0.0.1', 8888  # by default

    loop = asyncio.get_event_loop()

    types = [('HTTP', 'High'), 'HTTPS', 'CONNECT:80']
    codes = [200, 301, 302]

    broker = Broker(max_tries=1, loop=loop)

    # Broker.serve() also supports all arguments that are accepted
    # Broker.find() method: data, countries, post, strict, dnsbl.
    broker.serve(host=host, port=port, types=types, limit=10, max_tries=3,
                 prefer_connect=True, min_req_proxy=5, max_error_rate=0.5,
                 max_resp_time=8, http_allowed_codes=codes, backlog=100)

    urls = ['http://httpbin.org/get', 'https://httpbin.org/get',
            'http://httpbin.org/redirect/1', 'http://httpbin.org/status/404']

    proxy_url = 'http://%s:%d' % (host, port)
    loop.run_until_complete(get_pages(urls, proxy_url))

    broker.stop()


if __name__ == '__main__':
    main()

标签: pythonproxy

解决方案


推荐阅读