V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
waibunleung
V2EX  ›  PHP

通过 PHP 代码发送的请求,要怎么抓包?

  •  
  •   waibunleung · 2018-04-06 23:12:05 +08:00 · 6164 次点击
    这是一个创建于 2416 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近遇到一个问题,要通过 php 调用第三方邮件发送接口,但是写出来的代码请求返回的是 200,不过却没有成功发送邮件 所以想抓包看看通过 php 发出的请求是怎样的,不过不知道要用什么方法抓这个包,开发是在 mac 下的,charles 好像只能抓到浏览器的包,不知道怎么抓 php 发出的请求, 有想过用 php://input 打印,不过它不支持 formdata 的数据,因为邮件发送是带附件的,用的是 formdata 的方式,所以想问问大家这种情况有什么好的处理方法么?

    14 条回复    2018-04-24 17:09:59 +08:00
    murmur
        1
    murmur  
       2018-04-06 23:12:36 +08:00
    wireshark 了解下
    只要先学会怎么用过滤器后面都好说
    waibunleung
        2
    waibunleung  
    OP
       2018-04-06 23:13:49 +08:00
    @murmur mac 下面我用的是 charles
    有没有 charles 的方法?
    wangbenjun5
        3
    wangbenjun5  
       2018-04-06 23:20:29 +08:00
    charles 只能抓 http 的包,wireshark 通吃 iso 七层模型所有包。。。
    guiqiqi
        4
    guiqiqi  
       2018-04-06 23:20:33 +08:00 via iPhone
    个人觉得抓包和用什么发的没多大关系,主要是看走什么协议,看题主这个意思是走 HTTP,用 Wireshark 可以抓全局的包,不单单是浏览器,也有很多其他相似的软件(记得 fiddler 可以)题主可以试试,希望能帮助到你
    murmur
        5
    murmur  
       2018-04-06 23:28:50 +08:00
    @guiqiqi fiddler 也是抓浏览器 http 包的 唯一不同的是跟高贵的查尔斯相比 fiddler 是 win 下基于.net 免费的。。
    sw10
        6
    sw10  
       2018-04-07 00:05:25 +08:00   ❤️ 2
    设置 PHP 的 HTTP Client 的代理为 charles 的代理就行,默认为 8888。

    大概这样子:
    ```php
    $aContext = array(
    'http' => array(
    'proxy' => 'tcp://127.0.0.1:8888',
    ),
    );
    $cxContext = stream_context_create($aContext);

    $sFile = file_get_contents("http://www.google.com", false, $cxContext);

    echo $sFile;
    ```
    dobelee
        7
    dobelee  
       2018-04-07 00:10:50 +08:00
    fiddler 代理一下就 ok。
    wekw
        8
    wekw  
       2018-04-07 00:43:01 +08:00
    curl 可以很方便的设置代理,设成 Charles 的 127.0.0.1:8888 就行了,我前段时间刚操作过。
    mengzhuo
        9
    mengzhuo  
       2018-04-07 01:08:13 +08:00
    @wangbenjun5 #3

    3 层可以的,如果操作系统支持的话,连 2 层都可以……
    gdtv
        10
    gdtv  
       2018-04-07 05:38:39 +08:00 via Android
    楼主或许可以先用 postman 发送请求试试
    bintianbaihua
        11
    bintianbaihua  
       2018-04-07 09:06:04 +08:00
    wireshark 和 tcpdump 都可以抓, 命令都很简单, 搜一下就知道了
    hundan2020
        12
    hundan2020  
       2018-04-07 10:18:17 +08:00 via Android
    其他的楼上都说了,我说一个。
    可以用 proxifier 设置,让 php 进程走指定通道,或者是全局走指定通道,然后开监听服务抓包。理论上可行。
    zjsxwc
        13
    zjsxwc  
       2018-04-07 17:19:20 +08:00
    同局域网里,弄台电脑抓包,不过如果是发邮件加密(一般都是。。)的话抓了也没意义
    swat199538
        14
    swat199538  
       2018-04-24 17:09:59 +08:00
    加单点 fiddler 复杂一点就 wireshark
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2561 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:36 · PVG 12:36 · LAX 20:36 · JFK 23:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.