当前位置: 首页 > wzjs >正文

东莞长安网站设计网站开发源代码mvc

东莞长安网站设计,网站开发源代码mvc,网页设计与制作前景如何,网站制作方案和主要内容在 Axios 中设置代理 Axios 与代理 Axios 是 JavaScript 生态中最广泛使用的 HTTP 客户端之一。它基于 Promise,提供了易用、直观的 API,用于执行 HTTP 请求并处理自定义请求头、配置和 Cookie 等。 通过为 Axios 请求设置代理,您可以隐藏自…

在 Axios 中设置代理

Axios 与代理

Axios 是 JavaScript 生态中最广泛使用的 HTTP 客户端之一。它基于 Promise,提供了易用、直观的 API,用于执行 HTTP 请求并处理自定义请求头、配置和 Cookie 等。

通过为 Axios 请求设置代理,您可以隐藏自己的 IP 地址,从而让目标服务器更难以识别并阻止您的请求。

在 Axios 中使用代理

让我们来看看如何在 Axios 中设置 HTTP、HTTPS 或 SOCKS 代理。首先,安装 axios

npm install axios

在 Node.js 环境中,Axios 原生支持通过 proxy 配置来使用 HTTP 和 HTTPS 代理。因此,如果您只需要在 Node.js 项目中使用 HTTP/HTTPS 代理,则无需额外操作。

但若您要使用非 HTTP/S 协议的代理,就需要借助 Proxy Agents 项目提供的 http.Agent 实现,它让 Axios 能够使用不同协议的代理:

  • HTTP 和 HTTPS 代理: https-proxy-agent
  • SOCKS、SOCKS5 和 SOCKS4: socks-proxy-agent
  • PAC-*: pac-proxy-agent

HTTP/HTTPS 代理

您的 HTTP/HTTPS 代理的 URL 通常形式如下:

"<PROXY_PROTOCOL>://<PROXY_HOST>:<PROXY_PORT>"
  • <PROXY_PROTOCOL>:对于 HTTP 代理是 "http",对于 HTTPS 代理是 "https"。
  • <PROXY_HOST>:代理服务器的 IP 地址。
  • <PROXY_PORT>:代理服务器监听的端口号。

例如,假设这是您的 HTTP 代理的地址:

"http://47.88.62.42:80"

您可以在 Axios 中这样设置:

axios.get(targetURL, {proxy: {protocol: "http",host: "47.88.62.42",port: 80}
})

要验证这个配置方式是否可行,可以获取一个免费 HTTP 或 HTTPS 代理地址,比如:

Protocol: HTTP; IP Address: 52.117.157.155; Port: 8002

完整的代理地址就是 http://52.117.157.155:8002。为了验证代理是否生效,您可以通过 HTTPBin 项目的 /ip 接口测试请求。这个接口会返回请求的来源 IP,因此应该是代理服务器的 IP。

Node.js 中的测试代码片段示例如下:

import axios from "axios"async function testProxy() {// 使用 HTTP 代理进行请求const response = await axios.get("https://httpbin.io/ip", {proxy: {protocol: "http",host: "52.117.157.155",port: 8002}});// 打印结果console.log(response.data)
}testProxy()

运行脚本后,理想情况下会输出:

{ "origin": "52.117.157.155" }

警告
若您跟着示例代码直接运行,可能不会得到相同结果,因为免费代理服务通常不稳定、速度慢、容易出错,有的数据还可能被记录或解析,且通常时效很短。

SOCKS 代理

如果您尝试在 proxy 配置中将协议设置为 "socks",会出现如下错误:

AssertionError [ERR_ASSERTION]: protocol mismatch// ...{generatedMessage: false,code: 'ERR_ASSERTION',actual: 'dada:',expected: 'http:',operator: '=='}

这是因为 Axios 并不原生支持 SOCKS 代理。为此,需要先安装 socks-proxy-agent

npm install socks-proxy-agent

该包允许您在进行 HTTP 或 HTTPS 请求时接入 SOCKS 代理。然后,引入 socks-proxy-agent 提供的 SOCKS 代理实现:

const SocksProxyAgent = require("socks-proxy-agent")

或若您使用 ESM:

import { SocksProxyAgent } from "socks-proxy-agent"

假设您的 SOCKS 代理地址是:

"socks://183.88.74.73:4153"

注意
代理协议可能是 “socks”、“socks5” 或者 “socks4”。

将它存到某个变量里,并传给 SocksProxyAgent 构造函数:

const proxyURL = "socks://183.88.74.73:4153"
const proxyAgent = new SocksProxyAgent(proxyURL)

SocksProxyAgent() 会初始化一个 http.Agent 实例,让所有 HTTP/HTTPS 请求都走这个代理地址。

在 Axios 中使用 SOCKS 代理可以这样做:

axios.get(targetURL, {httpAgent: proxyAgent,    httpsAgent: proxyAgent
})

httpAgent 和 httpsAgent 指定了在进行 HTTP/HTTPS 请求时应使用的自定义代理类。也就是说,Axios 发出的 HTTP 或 HTTPS 请求都会走这里指定的 SOCKS 代理。同理,您也可以使用 https-proxy-agent 来为 Axios 设置 HTTP/HTTPS 代理。

示例如下:

import axios from "axios"
import { SocksProxyAgent } from "socks-proxy-agent"async function testProxy() {// 将代理 URL 替换成您自己的 SOCKS 代理地址const proxyURL = "socks://183.88.74.73:4153"// 定义 HTTP/HTTPS 代理 agentconst proxyAgent = new SocksProxyAgent(proxyURL)// 通过 SOCKS 代理发送请求const response = await axios.get("https://httpbin.io/ip", {httpAgent: proxyAgent,    httpsAgent: proxyAgent})// 打印结果console.log(response.data) // { "origin": "183.88.74.73" }
}testProxy()

如需更多关于在 Axios 中配置 SOCKS 代理的示例,可查看此链接:
如何在 Axios 中使用 SOCKS 代理

Axios 代理:进阶用法

全局设置代理

如果您想在所有请求中都使用同一个代理,可以直接在 Axios 实例中进行全局设置:

const axiosInstance = axios.create({proxy: {protocol: "<PROXY_PROTOCOL>",host: "<PROXY_HOST>",port: "<PROXY_PORT>"},// 其他配置…
})

或者,如果您使用了 Proxy Agents:

// 定义代理 agent ...const axiosInstance = axios.create({httpAgent: proxyAgent,    httpsAgent: proxyAgent
})

以下示例演示了如何全局使用 SOCKS 代理:

import { SocksProxyAgent } from "socks-proxy-agent";const proxyURL = "socks://183.88.74.73:4153";// 创建一个 SOCKS 代理 agent
const proxyAgent = new SocksProxyAgent(proxyURL);// 创建一个 Axios 实例,全局应用该 SOCKS 代理
const axiosInstance = axios.create({httpAgent: proxyAgent, // 用于 HTTP 请求httpsAgent: proxyAgent, // 用于 HTTPS 请求// 其他配置...
});

现在使用 axiosInstance 发出的所有请求都会自动走该代理。

在 Axios 中处理需要身份验证的代理

为了只允许付费用户使用高质量的代理,一些代理服务商会要求进行身份验证(用户名 + 密码)。若您不带用户名 / 密码地尝试连接到此类代理服务器,就会收到 407 Proxy Authentication Required 错误。

一般情况下,需要身份验证的代理地址格式如下:

[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]

例如,一个示例地址可能是:

http://admin:lK4w90MEe45YIkOpk@156.127.0.192:8391

对应的要素分解如下:

  • <PROTOCOL>http
  • <HOST>156.127.0.192
  • <PORT>8391
  • <USERNAME>admin
  • <PASSWORD>lK4w90MEe45YIkOpk

如果您使用 Axios 原生的 proxy,可以在 auth 字段中声明用户名和密码:

axios.get(targetURL, {proxy: {protocol: "http",host: "156.127.0.192",port: "8381",auth: {username: "admin",password: "lK4w90MEe45YIkOpk"}}
})

若您是使用 Proxy Agents,可以通过以下两种方式处理代理验证:

  1. 直接在代理 URL 中加入认证信息:
    var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
    
  2. 通过 URL 对象设置 username 和 password
    const proxyOpts = new URL("http://156.127.0.192:8391")
    proxyOpts.username = "admin"
    proxyOpts.password = "lK4w90MEe45YIkOpk"const proxyAgent = new SocksProxyAgent(proxyOpts)
    

对于 HttpsProxyAgent 也同理。

通过环境变量设置代理

另一个在 Axios 中全局配置代理的方式是通过环境变量:

  • HTTP_PROXY: 用于 HTTP 请求的代理服务器地址。
  • HTTPS_PROXY: 用于 HTTPS 请求的代理服务器地址。

在 Linux 或 macOS 上,您可以这样设置:

export HTTP_PROXY="[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"
export HTTPS_PROXY="[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

当 Axios 检测到这些环境变量后,会读取相应的代理配置,包括身份验证所需的凭据。若您想忽略这些环境变量,可将 proxy 字段设置为 false。也可以定义一个名为 NO_PROXY 的环境变量,以逗号分隔列出不需要走代理的域名。

同样的机制也可用于 通过 cURL 使用代理。

实现轮换代理

为了防止目标站点因多次请求同一 IP 而对您的代理进行封锁,您可以让每次请求都使用不同的代理地址:

  1. 定义一个包含多个代理信息的列表。
  2. 在每次请求前随机(或按一定规则)从列表中选择一个代理。
  3. 将选定的代理配置信息传给 Axios。

这种方式需要您拥有一个可用的代理池,诸如 Bright Data 提供的 轮换代理 就可以满足此需求。

结论

Bright Data 拥有全球领先的代理网络,为世界 500 强企业及超过 20,000 名客户提供服务。其全球代理网络覆盖多种类型:

  • 数据中心代理 – 超过 770,000 个数据中心 IP。
  • 住宅代理 – 覆盖 195+ 个国家/地区、共 72M+ 个住宅 IP。
  • ISP 代理 – 超过 700,000 个 ISP IP。
  • 移动代理 – 超过 7M 个移动 IP。

立即免费注册 Bright Data 账户 试用我们的代理服务器吧。

http://www.dtcms.com/wzjs/833202.html

相关文章:

  • 小城镇建设有关网站中文单页面网站模板
  • wordpress文章标题优化常熟seo网站优化软件
  • 搭建一个网站要多少网站分类标准
  • 住房城乡与建设厅网站携程网网站规划建设特点
  • 网站推广自己建立网站步骤
  • ppt超链接至网站怎么做建设银行手机登录网站
  • 网站建设员课程网站开发学生鉴定表
  • 网站备案 谁接入谁负责网站只做五周
  • 郑州的建设网站有哪些手续费wordpress 微信 微博
  • oppo网站开发设计个人网站建设赚取流量费
  • 电商网站如何避免客户信息泄露陕西做网站公司有哪些
  • 企业网站建设顾问strikingly建站怎么样
  • 深圳做二类学分的网站新建的网站如何做seo
  • 网站开发 分类编码贵州省住房和城乡建设厅网站报名网
  • 织梦网站图片修改不了王湛简历
  • 河北邯郸网站建设公司wap网站建设学什么
  • 网站开发技术职责品牌海外推广
  • 做网站都需要买什么网页主题参考
  • 网站开发费用摊销年限怎么做电脑网站后台
  • 石龙镇仿做网站住房与城乡建设部网站 黑龙江
  • 做360优化网站都有哪家怎么把网站整站下载
  • 网站建设的目的和意义站长统计官方网站
  • 科技感网站编写网站程序
  • 沭阳找做网站合伙前端企业网站开发
  • 个人网站建设基础与实例ps做网站效果图
  • 前端做网站的兼职网站的动态图怎么做的
  • 崇左网站建设公司网站平台设计费用多少
  • 适合新手做的网站项目wordpress 访问空白
  • 常州外贸网站网站设计 布局
  • 做网站卖多少钱一个专业建设计划