首页 文章

如何使用 curl php 通过请求有效负载上传文件

提问于
浏览
1

我无法访问后端服务器,我通过网络分析了 API。我想使用 API.I 上传文件,观察到在网络中对该 API .I 观察到的请求有效负载的 post 请求中没有参数。

响应标题

Cache-Control:no-cache Connection:keep-alive Content-Length:135 Content-Type:text/html; charset=utf-8 Date:Sat,2016 年 8 月 6 日 14:32:00 GMT Location:http://myURL Server:nginx/1.2.3 Set-Cookie:_mystore2_session=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARg%3D%3D--63863b861eb33b48b3137d187b2113fe90a930f3; path=/; HttpOnly Status:302 发现 X-Rack-Cache:invalidate,传递 X-Request-Id:3c843dc4dcb55bcf5f15e139264fa9be X-Runtime:0.884597 X-UA-Compatible:IE=Edge,chrome=1

请求标题

Accept:text/html,application/xhtml xml,application/xml; q=0.9,image/webp,/; q=0.8 Accept-Encoding:gzip,deflate Accept-Language:en-US,en; q=0.8 Cache-Control:no-cache Connection:keep-alive Content-Length:642389 Content-Type:multipart/form-data; boundary=----WebKitFormBoundary2rjUr5SSxx3BXjGn Cookie:s =; lat_lon=33.69%2673.0551; __utmt=1; _mystore2_session=BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw--c3c1b5d437fd04a80dc888822811d2d4d354ae29; __utma=129180296.2104761345.1470477279.1470488831.1470491357.3; __utmb=129180296.10.9.1470493699533; __utmc=129180296; __utmz=129180296.1470477279.1.1.utmcsr=(direct)| utmccn=(direct)| utmcmd=(none)Host:www.usedmotorcycles.net Origin:myURL Pragma:no-cache Referer:myURL Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0(Windows NT 6.2; WOW64)AppleWebKit/537.36(KHTML,和 Gecko 一样)Chrome/51.0.2704.103 Safari/537.36

请求有效负载

------WebKitFormBoundary2rjUr5SSxx3BXjGn Content-Disposition:form-data; NAME = “utf-8”

✓------WebKitFormBoundary2rjUr5SSxx3BXjGnContent-Disposition:form-data; NAME = “authenticity_token”

ptXIz6vJJqveSBM5Wvq387jZG4qql7TbL0xwz8Yj6iA = ------WebKitFormBoundary2rjUr5SSxx3BXjGn Content-Disposition:form-data; name =“image [3]”; filename =“截图(156).png”Content-Type:image/png

我如何使用 curl 有效负载提交我的文件?

1 回答

  • 1

    引用:I have observed that there are no parameters in post request to that API错了,有一堆参数,仅举几例:Cookie:slat_lon__utmt_mystore2_session__utma和更多。

    此外,这不是您向我们展示的完整请求标头。对于一个,它缺少请求类型(尽管它可能是一个 POST 请求)无论如何,要用 curl 复制它,它类似于:

    <?php 
    $ch=curl_init();
    curl_setopt_array($ch,array(
    CURLOPT_URL=>'???',
    CURLOPT_ENCODING=>'',
    CURLOPT_POST=>true,
    CURLOPT_POSTFIELDS=>array(
    'Cookie:s'=>'',
    'lat_lon'=>'33.69&73.0551',
    '_mystore2_session'=>'BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw--c3c1b5d437fd04a80dc888822811d2d4d354ae29',
    'image'=>array(new CURLFile('/path/to/file.png','image/png','Screenshot (156).png'))
    //and more post data here.
    
    ),
    CURLOPT_HTTPHEADER=>array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
    'Accept-Language: en-US,en;q=0.8',
    'Cache-Control: no-cache',
    'Pragma: no-cache',
    'Origin: myURL',
    //and more headers here
    ),
    CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    ));
    curl_exec($ch);
    

    注意:这不是完整的代码,它缺少CURLOPT_POSTFIELDCURLOPT_HTTPHEADER的一堆数据,但这应该让你开始

相关问题