船说 CMS 采集代理 IP 怎么配置

juming
juming 初级会员超兽战士
发布于 2026-10-08 22:18 ·2 浏览 ·0 回复

照着这篇做完,你能给船说 CMS 的采集模块接上代理 IP,让采集请求从代理服务器出去,不再因为本机 IP 被目标站封掉而采不到数据。

第一步:先确认你的船说 CMS 有没有内置代理入口

这一步要判断后台是否自带代理配置项,它决定你后面走「点界面」还是「改代码」两条完全不同的路。

登录后台(默认入口一般是 /admin 或 /admin.php),看左侧菜单,常见路径是「采集」→「采集节点管理」(有的版本写「内容采集」「采集管理」)。点进任意一个节点的编辑页,往下滚动找「采集设置」或「高级设置」区块,看里面有没有名字带「代理」的输入框,比如「代理服务器地址」「代理 IP」「Proxy」。

  • 找得到这个框 → 走第二步、第三步。
  • 找不到 → 直接跳到第五步,改采集核心文件。

注意:船说 CMS 有几个不同发行版本,菜单名不完全一致(v1.x 常见「采集节点管理」,部分 v2.x 改成「采集任务」),以你后台实际显示的文字为准,别硬套。

第二步:先把一个能用的代理验证好

这一步要拿到一个格式正确、且此刻真的能通的代理,格式写错是后面采集全失败的罪魁祸首。

代理有两种写法,记清楚:

  • HTTP 代理:http://1.2.3.4:8888
  • 带账号密码:http://用户名:密码@1.2.3.4:8888

在服务器上先手动测一次:

curl -x http://用户名:密码@1.2.3.4:8888 -I https://你要采集的站.com --max-time 15

看到 HTTP/1.1 200 或 301/302 才算通。返回 Could not resolve proxy 是地址写错,Connection timed out 是 IP 已失效或端口被墙。

注意:密码里如果含 @、#、: 这些符号,必须做 URL 编码,否则 PHP 解析代理地址时会从错误的位置切开,表现出来就是「配置没错但一直连不上」。

第三步:在采集节点里填代理

这一步把上一步验证过的代理写进配置,填完保存即可生效。

在第二步找到的那个「代理服务器地址」输入框里,粘贴完整的 http://用户名:密码@1.2.3.4:8888,不要只填 IP 和端口。旁边如果有「代理超时」填 15~30(秒),「代理类型」选 HTTP(除非你用的是 SOCKS5,那就选 SOCKS5 并把地址写成 socks5://1.2.3.4:1080)。保存后回到采集页点「测试采集」或「采集一次」。

第四步:分清全局代理和单节点代理

这一步是为了避免你只给一个节点配了代理,别的节点还在用本机 IP 裸奔。

如果后台「系统」→「系统设置」→「采集设置」里有代理项,那是全局代理,所有采集节点都走它;节点编辑页里的代理项通常优先级更高,会覆盖全局值。想统一管理就只配全局,想分站分代理就逐个节点配。

第五步:后台没有代理入口,改采集核心文件

这一步针对的是后台完全不提供代理选项的版本,靠改代码实现。

用 SFTP 或宝塔面板的文件管理器进网站根目录,在 /includes/、/app/ 或 /extend/ 下搜索关键词 curl_setopt,找到采集请求那段函数(文件名常含 collect、spider、caiji)。在 curl_setopt($ch, CURLOPT_URL, ...) 后面补三行:

curl_setopt($ch, CURLOPT_PROXY, 'http://1.2.3.4:8888');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '用户名:密码');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);

注意:如果采集代码用的是 file_get_contents() 而不是 cURL,加 cURL 参数完全无效,必须把请求方式换成 cURL,否则你会怀疑人生。

第六步:接代理池做自动轮换

单 IP 代理跑久了照样会被封,这一步让它每次请求换一个。

在同目录建 proxies.txt,一行一个代理地址。在采集函数里替换成:

$list = file(__DIR__ . '/proxies.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$proxy = $list[array_rand($list)];
curl_setopt($ch, CURLOPT_PROXY, $proxy);

如果你买的是「提取型 API」,就改成每次请求前 file_get_contents($apiUrl) 拉一个新鲜 IP。

第七步:测试与排错

这一步确认整条链路真的通了。

后台点「采集测试」采一条内容,成功即配置正确。失败时按顺序查:PHP 错误日志(宝塔面板「网站」→「错误日志」,或 /www/wwwlogs/站点名.error.log)、代理是否过期、目标站是否需要 Cookie。

注意:开了代理以后,图片下载、验证码识别、回调通知这些请求可能一起走代理,如果图片采不回来,去采集设置里把「图片本地化」的代理单独关掉。

小结

  • 先确认后台有无「代理服务器地址」输入框,决定走界面还是改代码。
  • 代理格式必须是 http://用户名:密码@IP:端口,密码含特殊符号要 URL 编码。
  • 配置前先用 curl -x 在服务器上单独验证代理可用。
  • 采集代码若是 file_get_contents(),加 cURL 代理参数无效,必须先换成 cURL。
  • 多 IP 轮换用 proxies.txt + array_rand(),别长期用单一代理。
  • 出错优先看 PHP 错误日志,而不是反复改配置。
版权声明:本文来自 GJ站长论坛《船说 CMS 采集代理 IP 怎么配置》
原文链接:https://www.gj0.com/thread-1223.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。
他们都看过 1 人浏览过
GJ论坛站长

全部回复 0

还没有回复,来抢沙发~