在一样平常开辟中,网络请求是不可制止的。通过使用署理服务器,可以更好地控制请求的来源、隐蔽 IP 地址,大概绕过网络限定。在本篇文章中,我将分享怎样使用 axios 库联合 HTTP、HTTPS 和 SOCKS5 署理来发送网络请求,并详细介绍实现过程。
预备工作
首先,我们需要确保项目中安装了必要的依赖,包括 axios、http-proxy-agent、https-proxy-agent 和 socks-proxy-agent。可以使用以下命令进行安装:
- npm install axios http-proxy-agent https-proxy-agent socks-proxy-agent
复制代码 安装完成后,就可以开始构建代码了。
代码实现
1. 导入必要的模块
我们首先导入 axios 库及相应的署理模块:
- import axios from "axios";
- import { HttpProxyAgent } from "http-proxy-agent";
- import { HttpsProxyAgent } from "https-proxy-agent";
- import { SocksProxyAgent } from "socks-proxy-agent";
复制代码 这里我们使用 axios 作为 HTTP 客户端,用它来发送网络请求;而 http-proxy-agent、https-proxy-agent 和 socks-proxy-agent 用于处理差别范例的署理协议。
2. 配置 HTTP 署理
我们通过 HttpProxyAgent 配置 HTTP 署理:
- const http = () => {
- const httpAgent = new HttpProxyAgent("http://127.0.0.1:7899");
- httpAxios.defaults.httpAgent = httpAgent;
- httpAxios.defaults.proxy = true;
- httpAxios.get("http://ipinfo.io", {}).then((res) => {
- console.log(res.data);
- });
- };
复制代码
- HttpProxyAgent("<http://127.0.0.1:7899>"):定义 HTTP 署理的地址。这里我们指定署理服务器位于本地的 7899 端口。
- httpAxios.defaults.httpAgent:设置 axios 请求的 httpAgent,用于处理署理请求。
- httpAxios.defaults.proxy = true:启用署理模式。
- httpAxios.get("<http://ipinfo.io>"):发送 HTTP 请求,并输出响应内容。
3. 配置 HTTPS 署理
对于 HTTPS 请求,我们可以使用 HttpsProxyAgent:
- const https = () => {
- const httpsAgent = new HttpsProxyAgent("http://127.0.0.1:7899");
- httpsAxios.defaults.httpsAgent = httpsAgent;
- httpsAxios.defaults.proxy = false;
- httpsAxios.get("https://ipinfo.io", {}).then((res) => {
- console.log(res.data);
- });
- };
复制代码
- HttpsProxyAgent("<http://127.0.0.1:7899>"):这里我们依然使用同一个署理地址。
- httpsAxios.defaults.httpsAgent:为 HTTPS 请求设置 httpsAgent。
- httpsAxios.defaults.proxy = false:禁用内置的 axios 署理,因为我们手动定义了署理。
4. 配置 SOCKS5 署理
为了支持 SOCKS5 署理,我们需要使用 SocksProxyAgent:
- const socks5 = () => {
- const socks5Agent = new SocksProxyAgent("socks5://127.0.0.1:7898");
- socks5Axios.defaults.httpsAgent = socks5Agent;
- socks5Axios.defaults.proxy = false;
- socks5Axios.get("https://ipinfo.io").then((res) => {
- console.log(res.data);
- }).catch((err) => {
- console.log(err.message);
- });
- };
复制代码
- SocksProxyAgent("socks5://127.0.0.1:7898"):定义 SOCKS5 署理地址。我们使用本地的 7898 端口。
- socks5Axios.defaults.httpsAgent:将 socks5Agent 作为 axios 的 httpsAgent。
- socks5Axios.defaults.proxy = false:禁用 axios 自带的署理功能。
5. 实行代码
最后,我们将全部署理请求依次实行:
完整代码
以下是完整的代码实现:
- import axios from "axios";
- import { HttpProxyAgent } from "http-proxy-agent";
- import { HttpsProxyAgent } from "https-proxy-agent";
- import { SocksProxyAgent } from "socks-proxy-agent";
- let httpAxios = axios;let httpsAxios = axios;let socks5Axios = axios;const http = () => {
- const httpAgent = new HttpProxyAgent("http://127.0.0.1:7899");
- httpAxios.defaults.httpAgent = httpAgent;
- httpAxios.defaults.proxy = true;
- httpAxios.get("http://ipinfo.io", {}).then((res) => {
- console.log(res.data);
- });
- };
- const https = () => {
- const httpsAgent = new HttpsProxyAgent("http://127.0.0.1:7899");
- httpsAxios.defaults.httpsAgent = httpsAgent;
- httpsAxios.defaults.proxy = false;
- httpsAxios.get("https://ipinfo.io", {}).then((res) => {
- console.log(res.data);
- });
- };
- const socks5 = () => {
- const socks5Agent = new SocksProxyAgent("socks5://127.0.0.1:7898");
- socks5Axios.defaults.httpsAgent = socks5Agent;
- socks5Axios.defaults.proxy = false;
- socks5Axios.get("https://ipinfo.io").then((res) => {
- console.log(res.data);
- }).catch((err) => {
- console.log(err.message);
- });
- };
- http();
- https();
- socks5();
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |