开发者社区> 问答> 正文

fidder 抓包的问题? 400 报错

fidder 抓包的问题? 400 报错

php的curl模拟post传递数据,据说,传的格式是键值对的话,他会自动转换成表单形式提交。我想验证,写了一个curl.php,里面就是curl 以post方式请求一个网站。

然后,我访问curl.php, 打开fidder监测。发现只有到curl.php的请求,没有curl.php 文件里那个curl的请求。

请问是哪里出错了

展开
收起
爱吃鱼的程序员 2020-06-03 17:09:35 672 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    Fiddler只是抓运行在第七层的http包的啊。。。你代码里跑的curl并不在这一层,你是抓不到的,你只能用wireshark这样的工具来抓######回复

    @plugin : 你理解错了。######不对啊。curl.php 的程序curl请求,他也是一个http请求,并且是在本地的服务器里 跑的呀。######

            打个比方,fiddler是个摄像头,HTTP协议就是一道菜(准确地说,是HTTP协议的输入输出。你不关注这道菜里面有什么氨基酸和维生素,你只是食客,负责吃这道菜的),浏览器是一个厨房,从厨房到餐厅之间有一条路,fiddler就安装在这条路上,这条路就是代理,厨房的所有进和出都在fiddler的监视中。谁进了厨房,端出了什么菜,fiddler都能看到。 你为什么要监控?因为你怕服务员在端菜的时候在你菜里吐痰,或者你就是想知道这个餐馆都正在做哪些菜。其实你自己有眼睛也能看的,但你看不过来这么多,才需要这个摄像头。摄像头必须安装在这条路或过道上,才能看到菜的样子,安装在桌子底下是没用的。还有些地方是不让安装摄像头的,比如女厕所,并且女厕所也不是食客关注的地方。这个摄像头也不是安装在厨房的,你对做菜的细节不关注,你关注的只是输入输出。

      厨房里有个厨师,厨师是做菜的,这个厨师就是web服务器,你可能认识这个厨师(本地服务器),也可能不认识。甚至厨师屁股上有颗痣你都知道,甚至这个厨师就是你儿子(你自己写的代码),你也知道这个厨师做菜很难吃(你代码太烂),但这些都和菜无关。你叫了个红烧耗子肉,这个红烧耗子肉就是你的curl.php里面用 curl请求干的事,但这个厨师不会做这个菜,于是呢,这个厨师从厨房的侧门出去,跑到隔壁饭店,找隔壁厨师赵日狗做了个红烧耗子肉,菜再让人端出来给你(赵日狗就是你curl.php里请求的第三方),这些你统统不知道。这个饭馆又不是只有一条路一道门,你fiddler监控的只是菜。这个厨师就是你的web服务器,厨师干啥了fiddler是看不到的,fiddler只是监控菜的,至于菜从怎么做的,它管不着,你也管不着。你只是看菜和吃菜的食客。

    ######回复 @plugin : 它能监听的也只是手机浏览器和基于webview的数据而已,手机上的代理设置和你PC上的代理设置是一个意思的。所谓webview就是APP里有基于网页的数据展示,比如OSC的安卓APP就是基于webview来展示的,实际调用的手机内置的浏览器。######再问一下,我有个同事都是给手机设置个代理,就可以用fidder监听请求了。这是什么原理######3Q.太感谢了######回复 @plugin : wireshark监听通过网卡的所有流量,并且它的位置更底层######感谢。通俗易懂。为什么wireshark就可以呢。他的工作原理和fidder区别在哪######拜楼上######

    关键就是:这个请求是从你服务器的核心里发出去的,并不是通过你本地浏览器发出去的,你的fildder抓的只是从浏览器里发出去的请求,所以抓取不到,这样说明白了吗

    ######回复 @plugin : 对啊,你手机走的是代理,代理是什么意思,是把你手机的请求转到你电脑上去请求,电脑上请求完毕后再把结果返回给手机,其本质还是利用你的电脑发起的http请求(模拟浏览器行为),我就是这样抓手机app包的######我一个同事经常用手机设置一个代理,fidder就可以监听手机发出去的http请求。这又为什么可以######

    以及,你需要把软件的名字输入对fiddler.


    ######
    $ch = curl_init ();
    $options [CURLOPT_PROXY] = '127.0.0.1:8888';
    curl_setopt_array ( $ch, $options );
    ######

    引用来自“jp029”的评论

    $ch = curl_init ();
    $options [CURLOPT_PROXY] = '127.0.0.1:8888';
    curl_setopt_array ( $ch, $options );
    给CURL设置代理才是真理
    2020-06-03 20:43:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载