You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬虫调用SMWS API连接失败,请求解决办法

解决SMWS API请求连接到本地127.0.0.1被拒绝的问题

错误原因分析

从报错信息看,请求最终被导向了127.0.0.1:80而非目标API地址,大概率是以下几个原因:

  • 系统代理配置干扰:requests默认读取系统的HTTP/HTTPS代理环境变量,如果这些变量指向了本地未运行的代理服务,就会出现连接拒绝。
  • 代码遗漏关键导入:原代码中使用了requests.Session()但未导入requests模块,这会直接导致运行错误(可能是粘贴时遗漏)。
  • API重定向异常:SMWS API可能存在地址变更或异常重定向,导致请求被错误转发到本地。

可行解决办法

1. 禁用系统代理干扰

在创建session后添加session.trust_env = False,强制requests不使用系统代理:

session = requests.Session()
session.trust_env = False  # 禁用系统代理

2. 补全缺失的requests导入

在代码开头添加:

import requests

3. 排查API重定向问题

临时禁用重定向,查看初始请求的状态码和重定向地址:

response = session.get(url, params=params, allow_redirects=False)
print("状态码:", response.status_code)
print("重定向地址:", response.headers.get("Location"))

如果Location指向本地地址,说明API端点可能已变更,需要查阅SMWS官方文档确认最新的API地址。

4. 升级requests和urllib3版本

旧版本的库可能存在重定向或代理处理的bug,执行以下命令升级:

pip install --upgrade requests urllib3

修改后的完整代码示例

import time
from datetime import datetime
import requests  # 补全导入
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# Create a session with retries
session = requests.Session()
session.trust_env = False  # 禁用系统代理
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

url = "https://api.smws.com/api/v1/bottles"

params = {
    "store_id": "uk",
    "parent_id": 61,
    "page": 1,
    "sortBy": "pricedesc",
    "minPrice": 0,
    "maxPrice": 0,
    "perPage": 256,
}

store = []
new_store = []

now = datetime.now()
date = now.strftime("%d/%m %H:%M")
print('Time started', date)

# 先检查响应状态码
response = session.get(url, params=params)
print("Response Status Code:", response.status_code)
data = response.json()

print(data)

内容的提问来源于stack exchange,提问作者Ianucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:13:17