📜  请求使用许多代理 python - TypeScript (1)

📅  最后修改于: 2023-12-03 15:12:11.058000             🧑  作者: Mango

请求使用许多代理 Python - TypeScript

在网络爬虫或者其他需要高并发或者隐私保护的应用中,经常需要使用多个代理来进行请求。本文将介绍如何在 Python 和 TypeScript 中使用多个代理进行请求。

Python

在 Python 中,可以使用 requests 库来进行网络请求,配合使用代理来实现请求的多样化。

1. 单个代理

使用单个代理时,可以直接在 requests.get 或 requests.post 等函数中指定代理。

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

response = requests.get("http://www.example.com", proxies=proxies)

其中,代理地址需要按照以下格式进行指定:

  • HTTP 代理:http://host:port
  • HTTPS 代理:https://host:port
2. 多个代理

使用多个代理时,需要使用一些工具来协调各个代理的调用。以下是一个简单的实现方法。

import requests
import random
 
proxies = [
  {"http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080"},
  {"http": "http://2.2.2.2:3128", "https": "http://2.2.2.2:1080"},
  {"http": "http://3.3.3.3:3128", "https": "http://3.3.3.3:1080"},
]
 
def get_random_proxy():
  return random.choice(proxies)
 
for i in range(10):
  proxy = get_random_proxy()
  response = requests.get("http://www.example.com", proxies=proxy)
  print(response.status_code)

这个方法通过随机选择代理来实现多个代理的调用。

TypeScript

在 TypeScript 中,可以使用 axios 库来进行网络请求,配合使用代理来实现请求的多样化。

1. 单个代理

使用单个代理时,可以直接在 axios.get 或 axios.post 等函数中指定代理。

import axios from 'axios';

const config = {
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),
  proxy: {
    host: '10.10.1.10',
    port: 8080,
  },
};

axios.get('http://www.example.com', config)
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });
2. 多个代理

使用多个代理时,需要使用一些工具来协调各个代理的调用。以下是一个简单的实现方法。

import axios, {AxiosProxyConfig} from 'axios';

const proxies: AxiosProxyConfig[] = [
  {
    host: '10.10.1.10',
    port: 8080,
  },
  {
    host: '2.2.2.2',
    port: 8080,
  },
  {
    host: '3.3.3.3',
    port: 8080,
  },
];

function getRandomProxy(): AxiosProxyConfig {
  return proxies[Math.floor(Math.random() * proxies.length)];
}

for (let i = 0; i < 10; i++) {
  const proxy = getRandomProxy();
  axios.get('http://www.example.com', {proxy})
    .then(response => {
      console.log(response.data);
    })
    .catch(error => {
      console.log(error);
    });
}

这个方法也是采用随机选择代理的方式来实现多个代理的调用。

总结

无论是 Python 还是 TypeScript,都可以通过使用代理来实现请求的多样化。在使用多个代理时,需要特别注意代理的使用规则,避免出现 IP 被封禁的情况。