【发布时间】:2021-12-16 13:26:57
【问题描述】:
如何更改每个 POST 请求的 IP?它现在不适合我。也许还有另一种方法?是否可以打开到代理的持久连接然后关闭它?
next_delay = 0.0
flag = 0
proxy1 = 'ip:port'
proxy2 = 'ip:port'
proxy3 = 'ip:port'
proxy4 = 'ip:port'
async def fetch_all_tasks(session):
print('Start')
print(time.time())
responses = await asyncio.gather(*tasks(session))
print('End')
print(time.time())
for response in responses:
results.append(await response.text())
def tasks(session):
task = []
for i in range(0, requestsNumber):
task.append(asyncio.create_task(request(session)))
return task
async def fetch_main(headers):
async with aiohttp.ClientSession(headers=headers) as session:
await fetch_all_tasks(session)
async def request(session):
global next_delay
global flag
next_delay += delay
await asyncio.sleep(next_delay)
if flag == 0:
flag = 1
return await session.post(url, proxy=proxy1, data = json.dumps(js), ssl=False)
elif flag == 1:
flag = 2
return await session.post(url, proxy=proxy2, data = json.dumps(js), ssl=False)
elif flag == 2:
flag = 3
return await session.post(url, proxy=proxy3, data = json.dumps(js), ssl=False)
elif flag == 3:
flag = 4
return await session.post(url, proxy=proxy4, data = json.dumps(js), ssl=False)
elif flag == 4:
flag = 0
return await session.post(url, proxy=proxy4, data = json.dumps(js), ssl=False)
loop = asyncio.get_event_loop()
loop.run_until_complete(fetch_main(headers))
【问题讨论】:
标签: python python-requests python-asyncio aiohttp