php + curl + multipart/form-data + 代理授权(基本)

Posted

技术标签:

【中文标题】php + curl + multipart/form-data + 代理授权(基本)【英文标题】:php + curl + multipart/form-data + proxy-authorization(basic) 【发布时间】:2017-11-07 11:01:50 【问题描述】:

我有一个问题:我尝试发送标头,但没有任何反应。

这是来自“Live HTTPHeaders”的部分标头(我替换了网址):

http://some_site/news/ 发布/新闻/ HTTP/1.1 主持人:some_site 用户代理:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,放气 推荐人:http://some_site/news/ 代理授权:基本 MTQ4YjU5YWMtM2VlOS00ZmIzLThlODItOTU0MjcxODhhZTRlOjAyNDdkNWRkNGY1MTE2NWUzODFlNDVhYTY1YzQ5OWYwMTRhYzA2ZTg= 连接:保持活动 升级不安全请求:1 内容类型:multipart/form-data;边界=-----------123064818248741452271123522 内容长度:893 -----------------------------123064818248741452271123522 内容处置:表单数据;名称="BJpKD8Fx" 你好!!! -----------------------------123064818248741452271123522 内容处置:表单数据;名称=“文件”;文件名="" 内容类型:应用程序/八位字节流 -----------------------------123064818248741452271123522 内容处置:表单数据;名称="父" 155143 -----------------------------123064818248741452271123522 内容处置:表单数据;名称="重定向" 0 -----------------------------123064818248741452271123522 内容处置:表单数据;名称=“鸡蛋2” UzFWa05qVnpjRmw4UWtwd1MwUTRSbmc9 -----------------------------123064818248741452271123522 内容处置:表单数据;名称="提交" Äîáàâèòü --------------------------123064818248741452271123522-- 找到 HTTP/1.1 302

这是我的代码:

<?php

 $parent = 155129;

 function doPost( $url = 'http://some_site/news', $postdata = '' )

 $resource = curl_init();
 curl_setopt($resource, CURLOPT_URL, $url);
 curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt ($resource, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt ($resource, CURLOPT_SSL_VERIFYHOST, 0);
 curl_setopt ($resource, CURLOPT_HTTPHEADER, array('Expect:'));
 curl_setopt ($resource, CURLOPT_HEADER, 1);
 curl_setopt ($resource, CURLOPT_COOKIEJAR, 'cookie.txt');
 curl_setopt($resource,CURLOPT_COOKIEFILE,'cookie.txt');
 curl_setopt($resource, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
 if( $postdata != '' ) 
     curl_setopt($resource, CURLOPT_POST, true);
     curl_setopt($resource, CURLOPT_POSTFIELDS, $postdata);
 
 curl_setopt($resource, CURLOPT_FOLLOWLOCATION, true);
 $result = curl_exec($resource);
 curl_close($resource);
 return $result;



$c = doPost();
preg_match('#id="textarea_form_'.$parent.'" name="(.*?)"#ims', $c, $textName);
preg_match('#<form.*?\/form>#ims', $c, $arr );
preg_match('#name=eggs2.*?value="(.*?)">#ims', $arr[0], $egss2);

$postdata = array(
    $textName[1]=> 'Hello',
   'file'=>'@/;type=application/octet-stream',
   'parent' => $parent,
   'redirect'=> '0',
   'eggs2' => $egss2[1],
   'submit' => iconv('utf-8', 'cp1252', 'Добавить')
);

print_r(doPost('http://some_site/news',$postdata));
print_r( $postdata );

我做错了什么?

谢谢!

附言嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿!!!!我解决了!谢谢大家收看!祝你好运

【问题讨论】:

【参考方案1】:

你需要像这样注入你的标题:

curl_setopt($resource, CURLOPT_HTTPHEADER, array(
'X-Apple-Tz: 0',
'X-Apple-Store-Front: 143444,12'
));

【讨论】:

我做到了,但结果是一样的...... p.s.谢谢你的回答!

以上是关于php + curl + multipart/form-data + 代理授权(基本)的主要内容,如果未能解决你的问题,请参考以下文章

django中处理文件上传文件

通过 JQuery AJAX 一起发送 FormData 和 String 数据?

图片上传 - 在点击提交之前在网页上显示图片

php curl 证书问题

解析php中curl

linux上怎么操作开启php curl扩展