V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
waibunleung
V2EX  ›  PHP

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

  •  
  •   waibunleung · Apr 6, 2018 · 6860 views
    This topic created in 2942 days ago, the information mentioned may be changed or developed.

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

    14 replies    2018-04-24 17:09:59 +08:00
    murmur
        1
    murmur  
       Apr 6, 2018
    wireshark 了解下
    只要先学会怎么用过滤器后面都好说
    waibunleung
        2
    waibunleung  
    OP
       Apr 6, 2018
    @murmur mac 下面我用的是 charles
    有没有 charles 的方法?
    wangbenjun5
        3
    wangbenjun5  
       Apr 6, 2018
    charles 只能抓 http 的包,wireshark 通吃 iso 七层模型所有包。。。
    guiqiqi
        4
    guiqiqi  
       Apr 6, 2018 via iPhone
    个人觉得抓包和用什么发的没多大关系,主要是看走什么协议,看题主这个意思是走 HTTP,用 Wireshark 可以抓全局的包,不单单是浏览器,也有很多其他相似的软件(记得 fiddler 可以)题主可以试试,希望能帮助到你
    murmur
        5
    murmur  
       Apr 6, 2018
    @guiqiqi fiddler 也是抓浏览器 http 包的 唯一不同的是跟高贵的查尔斯相比 fiddler 是 win 下基于.net 免费的。。
    sw10
        6
    sw10  
       Apr 7, 2018   ❤️ 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  
       Apr 7, 2018
    fiddler 代理一下就 ok。
    wekw
        8
    wekw  
       Apr 7, 2018
    curl 可以很方便的设置代理,设成 Charles 的 127.0.0.1:8888 就行了,我前段时间刚操作过。
    mengzhuo
        9
    mengzhuo  
       Apr 7, 2018
    @wangbenjun5 #3

    3 层可以的,如果操作系统支持的话,连 2 层都可以……
    gdtv
        10
    gdtv  
       Apr 7, 2018 via Android
    楼主或许可以先用 postman 发送请求试试
    bintianbaihua
        11
    bintianbaihua  
       Apr 7, 2018
    wireshark 和 tcpdump 都可以抓, 命令都很简单, 搜一下就知道了
    hundan2020
        12
    hundan2020  
       Apr 7, 2018 via Android
    其他的楼上都说了,我说一个。
    可以用 proxifier 设置,让 php 进程走指定通道,或者是全局走指定通道,然后开监听服务抓包。理论上可行。
    zjsxwc
        13
    zjsxwc  
       Apr 7, 2018
    同局域网里,弄台电脑抓包,不过如果是发邮件加密(一般都是。。)的话抓了也没意义
    swat199538
        14
    swat199538  
       Apr 24, 2018
    加单点 fiddler 复杂一点就 wireshark
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.