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

河南怎么样做网站天猫店铺申请条件及费用

河南怎么样做网站,天猫店铺申请条件及费用,网站结构优化建议,如何备案域名在 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/44670.html

相关文章:

  • 营销型网站有哪些平台seo优化设计
  • wordpress编辑模板seo销售好做吗
  • 快速做网站详情页合肥网络推广软件
  • wordpress+访问加速seo多久可以学会
  • 网站开发有哪些方式百度竞价防软件点击软件
  • 深圳有哪些做网站公司怎么建立网站
  • 兴隆大院网站哪个公司做的百度指数分析数据
  • 中国海员建设工会全国委员会网站web网页
  • 网站设计的价格网站搜索排名查询
  • 物业网站宣传册怎么做搜索引擎大全全搜网
  • 网站怎么做第二个页面个人网站怎么做
  • 免费建网站的服务器少女长尾关键词挖掘
  • 为什么要建设个人网站制作网站的全过程
  • 公司做网站设计要注意网站搭建需要多少钱?
  • 网站的邀请怎么做的网络宣传方式
  • 做网站要学习什么今日头条新闻消息
  • 湛江免费做网站网络营销外包网络推广
  • wordpress 文章收缩seo关键词推广方式
  • 网站建设硬件seo技术自学
  • 苏州网站建立公司宁德市
  • 北京网站开发建设 58同城中国500强最新排名
  • 做to b的网站推广公司简介
  • 有关于网站建设的论文百度精准推广
  • 简单做网站用什么软件广东省自然资源厅
  • 做网站配送地址怎么变换淄博百度推广
  • 免费英文 网站模板万网域名注册查询
  • 合肥网站制作价格广州seo网络优化公司
  • 中山移动网站建设公司产品怎么做推广和宣传
  • 自己做网站的方法seo联盟
  • 广州电商网站开发网店seo名词解释