📅  最后修改于: 2023-12-03 15:12:11.058000             🧑  作者: Mango
在网络爬虫或者其他需要高并发或者隐私保护的应用中,经常需要使用多个代理来进行请求。本文将介绍如何在 Python 和 TypeScript 中使用多个代理进行请求。
在 Python 中,可以使用 requests 库来进行网络请求,配合使用代理来实现请求的多样化。
使用单个代理时,可以直接在 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)
其中,代理地址需要按照以下格式进行指定:
使用多个代理时,需要使用一些工具来协调各个代理的调用。以下是一个简单的实现方法。
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 中,可以使用 axios 库来进行网络请求,配合使用代理来实现请求的多样化。
使用单个代理时,可以直接在 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);
});
使用多个代理时,需要使用一些工具来协调各个代理的调用。以下是一个简单的实现方法。
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 被封禁的情况。