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 + 代理授权(基本)的主要内容,如果未能解决你的问题,请参考以下文章