V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
piaochen0
V2EX  ›  问与答

有什么软件能模拟 http 接口访问不稳定的情况?

  •  
  •   piaochen0 · 2023-02-03 10:04:50 +08:00 · 2158 次点击
    这是一个创建于 666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前做的项目需要大量调用另外一个系统的 http 接口获取数据,
    由于系统设计缺陷,一次获取数据调用接口次数非常大。
    对方系统忙的时候,偶尔会返回 502 错误。
    我这边做了接口调用异常的处理,不过目前没办法测试,最近测试的时候,对方返回都是正常的。
    对方系统已经成型,我这边无法控制

    我在想有没有这样的软件,能代理我的访问,按配置概率随机返回一些错误码,其他时候返回正确的访问结果。 希望各位赐教。

    19 条回复    2023-02-03 16:53:55 +08:00
    zqz19941106
        1
    zqz19941106  
       2023-02-03 10:07:21 +08:00
    fiddler
    opengps
        2
    opengps  
       2023-02-03 10:09:10 +08:00
    5xx 是对方服务器问题,你用代理只是能让中间网络有问题,模拟不了对方的服务器处理报错
    loading
        3
    loading  
       2023-02-03 10:09:27 +08:00
    502 错误是内部错误啊,你自己写个 api 接口,先随机数摇塞子,然后直接返回 502 就行了。

    浏览器 F12 dev tool 只能模拟慢速网络和脱机。
    killva4624
        4
    killva4624  
       2023-02-03 10:12:46 +08:00   ❤️ 1
    你可以用 nginx 在最前面代理,然后配置 proxy_pass ,把真实的服务器和会随机返回 5XX 的后端一起作为 upstream ,通过 weight 控制权重。
    piaochen0
        5
    piaochen0  
    OP
       2023-02-03 10:15:26 +08:00
    @killva4624 我这边是客户端访问对方的接口,不是 server 端的程序。
    Mithril
        6
    Mithril  
       2023-02-03 10:19:01 +08:00
    fiddler ,直接改一下 auto responder 就可以了。
    配置一下 URL ,选那个 502 的 response ,或者你自己改一个。

    如果你的匹配条件更复杂的话,也可以自己改脚本来做。
    piaochen0
        7
    piaochen0  
    OP
       2023-02-03 10:19:34 +08:00
    @opengps 我这里只是关心我的客户端是否能获取到数据,对方报的 502 错误我这里要进行重试还有其他的数据补充,对方的服务器处理报错不需要关心。
    Toddd
        8
    Toddd  
       2023-02-03 10:20:13 +08:00
    听起来是 fiddler 和 Charles 能干得事,或者一个 mock
    MossFox
        9
    MossFox  
       2023-02-03 10:20:26 +08:00
    用过一个 node.js http-proxy-middleware 包,可以结合 express 很快地搭一个本地反代理来测试。这种需求下,可以接管实际请求返回时的数据,写一个随机报错 (可以是发送请求之前报错或者是收到响应之后丢弃然后报错,看哪种合理)。
    killva4624
        10
    killva4624  
       2023-02-03 10:22:32 +08:00
    @piaochen0 一样的道理:
    客户端 -> 代理 -> (真实 http 接口地址 + 自模拟 502 接口)
    opengps
        11
    opengps  
       2023-02-03 10:24:16 +08:00
    @piaochen0 #7 那你自己做个 webapi 就行了,用修改 hosts 方式实际调用自己的模拟 webapi
    MossFox
        12
    MossFox  
       2023-02-03 10:38:49 +08:00
    https://gist.github.com/MossTheFox/eb9ede4c622c4ea65493147efad72ff0

    安装两个包:
    npm i express http-proxy-middleware

    如果不熟悉 Node.js 的话,要做的基本就是下面这几步:
    mkdir temp
    cd temp
    npm init -y
    npm i express http-proxy-middleware

    目录结构:
    📂 temp
    - index.mjs (此文件)
    - package.json (npm 命令创建)

    运行: node index.mjs
    LLaMA2
        13
    LLaMA2  
       2023-02-03 11:03:03 +08:00
    别整的那么复杂,直接在你的 http 请求响应里先自己写死,按照一定概率直接无脑替换成 5XX 的 JSON 结果
    perfectlife
        14
    perfectlife  
       2023-02-03 11:07:13 +08:00 via Android
    混沌工程应该可以
    xuxu5112
        15
    xuxu5112  
       2023-02-03 11:24:36 +08:00
    代码里写死,debug 状态下随机忽略请求结果返回一个错误码。
    angryPHP
        16
    angryPHP  
       2023-02-03 14:34:58 +08:00
    unco020511
        17
    unco020511  
       2023-02-03 15:20:43 +08:00
    几乎所有的抓包软件都可以
    paopjian
        18
    paopjian  
       2023-02-03 16:37:49 +08:00
    vmware 里还能设置丢包百分比呢,错误码不应该是本地全测试一遍就好了么
    C603H6r18Q1mSP9N
        19
    C603H6r18Q1mSP9N  
       2023-02-03 16:53:55 +08:00
    你自己写个接口,随机返回不同数据和错误码呗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:10 · PVG 08:10 · LAX 16:10 · JFK 19:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.