【问题标题】:How I can change IP with each POST request?如何使用每个 POST 请求更改 IP?
【发布时间】: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


    【解决方案1】:

    你可以使用itertools.cycle,使用next()获取下一个代理:

    import itertools
    
    proxy1 = 'ip1:port'
    proxy2 = 'ip2:port'
    proxy3 = 'ip3:port'
    proxy4 = 'ip4:port'
    
    proxies = itertools.cycle([proxy1, proxy2, proxy3, proxy4])
    
    for x in range(10):
        currentProxy = next(proxies)  # fetches the next proxy!
        print(currentProxy)
    

    输出:

    ip1:port
    ip2:port
    ip3:port
    ip4:port
    ip1:port
    ip2:port
    ip3:port
    ip4:port
    ip1:port
    ip2:port
    

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 2013-11-08
      • 1970-01-01
      • 2023-03-17
      • 2018-09-05
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多