python - 如何旋转代理以在普通浏览器上使用
问题描述
我正在从事一个私人项目,我有一个代理列表,我想通过普通浏览器在每个请求或 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()
解决方案
推荐阅读
- java - Jenkins REST API,根据构建号过滤构建并以 JSON 格式获取结果
- python - 如何修复“标签在框架中的位置”
- typescript - 如何在同一命名空间中的多个文件上合并打字稿接口
- angular - ngb-carousel 更改起始幻灯片
- php - 单击按钮时调用模态
- algorithm - 无向图中的 Push-Relabel 最大流算法
- java - 带有可变长度 IN 子句的 JDBC 更新
- javascript - 运行以异步方式发出发布请求的数组 - Javascript
- python - 是什么让 Python 不是函数式编程语言?
- logstash - 有时logstash重播所有日志