最近遇到一个问题,要通过 php 调用第三方邮件发送接口,但是写出来的代码请求返回的是 200,不过却没有成功发送邮件 所以想抓包看看通过 php 发出的请求是怎样的,不过不知道要用什么方法抓这个包,开发是在 mac 下的,charles 好像只能抓到浏览器的包,不知道怎么抓 php 发出的请求, 有想过用 php://input 打印,不过它不支持 formdata 的数据,因为邮件发送是带附件的,用的是 formdata 的方式,所以想问问大家这种情况有什么好的处理方法么?
1
murmur 2018 年 4 月 6 日
wireshark 了解下
只要先学会怎么用过滤器后面都好说 |
2
waibunleung OP @murmur mac 下面我用的是 charles
有没有 charles 的方法? |
3
wangbenjun5 2018 年 4 月 6 日
charles 只能抓 http 的包,wireshark 通吃 iso 七层模型所有包。。。
|
4
guiqiqi 2018 年 4 月 6 日 via iPhone
个人觉得抓包和用什么发的没多大关系,主要是看走什么协议,看题主这个意思是走 HTTP,用 Wireshark 可以抓全局的包,不单单是浏览器,也有很多其他相似的软件(记得 fiddler 可以)题主可以试试,希望能帮助到你
|
6
sw10 2018 年 4 月 7 日 设置 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; ``` |
7
dobelee 2018 年 4 月 7 日
fiddler 代理一下就 ok。
|
8
wekw 2018 年 4 月 7 日
curl 可以很方便的设置代理,设成 Charles 的 127.0.0.1:8888 就行了,我前段时间刚操作过。
|
9
mengzhuo 2018 年 4 月 7 日
|
10
gdtv 2018 年 4 月 7 日 via Android
楼主或许可以先用 postman 发送请求试试
|
11
bintianbaihua 2018 年 4 月 7 日
wireshark 和 tcpdump 都可以抓, 命令都很简单, 搜一下就知道了
|
12
hundan2020 2018 年 4 月 7 日 via Android
其他的楼上都说了,我说一个。
可以用 proxifier 设置,让 php 进程走指定通道,或者是全局走指定通道,然后开监听服务抓包。理论上可行。 |
13
zjsxwc 2018 年 4 月 7 日
同局域网里,弄台电脑抓包,不过如果是发邮件加密(一般都是。。)的话抓了也没意义
|
14
swat199538 2018 年 4 月 24 日
加单点 fiddler 复杂一点就 wireshark
|