php模拟浏览器post,如何使用PHP / cURL模拟浏览器表单POST方法

我正在尝试使用PHP / cURL使用POST方法模拟浏览器.

当我查看该实时Http标头时,它显示了Content-Type:multipart / form-data.

我在互联网上检查了有人建议,如果将自定义标头指定为Content-Type:multipart / form-data,则cURL将发送multipart / form-data.

$headers = array(

'Content-Type' => 'multipart/form-data; boundary='.$boundary

);

当我显示它的print_r(curl_getinfo())时,这对我也不起作用

[content_type] => text/html; charset=UTF-8

这意味着cURL发送了默认标头

我还读到使用cURL发送/上传文件将导致数据以multipart / form-data的形式发送.我创建了一个curl上传的文件,但是再次运行curl_getinfo时,我得到了[content_type] =>为text / html;字符集= UTF-8

$data_array = array("field" => "@c:\file_location.txt");

我还尝试读取文件内容,以便发送的唯一内容是内容未附加的文件,但这对我不起作用curl_getinfo显示[content_type] =>为text / html;字符集= UTF-8.

$data_array = array("field" => "

我想念这里的东西吗?

这是引荐来源

网址

POST somepath HTTP/1.1

Host: www(dot)domain(dot)com

User-Agent: Mozilla/5.0 (Windows) Gecko/13081217 Firefox/3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: url/some-file.php

Content-Type: multipart/form-data; boundary=--------------------------$boundary

Content-Length: $some_number

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value1"

$some_text1

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value2"

$some_text2

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value3"

$some_text3

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value4"

$some_text4

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value5"

$some_text5

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value6"

$some_text6

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value7"

$some_text7

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value8"

$some_text8

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value9"

----------------------------$boundary

Content-Disposition: form-data; name="$some_Value10"

----------------------------$boundary--

这是一段代码.

//Include files

set_time_limit(0);

include'body.php';

include'keyword.php';

include'bio.php';

include'summary.php';

include'headline.php';

include'category.php';

include'spin.php';

include'random-text.php';

$category = category();

$headline = headline() ;

$summary = summary();

$keyword = keyword();

$body = body();

$bio = bio();

$target="url";

$ref ="url_ref";

$c = "Content-Disposition: form-data; name=";

$boundary = "---------------------------".random_text();

$category = category();

$headline = headline() ;

$summary = summary();

$keyword = keyword();

$body = body();

$bio = bio();

// emulating content form as it appears on livehttp header

$data = "\r\n".$boundary."\r\n".$c."\"pen_id\"\r\n\r\n".$Auth_id."\r\n".$boundary."\r\n".$c."\"cat_id\"\r\n\r\n".category()."\r\n".$boundary."\r\n".$c."\"title\"\r\n\r\n".headline()."\r\n".$boundary."\r\n".$c."\"meta_desc\"\r\n\r\n".summary()."\r\n".$boundary."\r\n".$c."\"meta_keys\"\r\n\r\n".keyword()."\r\n".$boundary."\r\n".$c."\"content\"\r\n\r\n".body()."\r\n".$boundary."\r\n".$c."\"author_bio\"\r\n\r\n".bio()."\r\n".$boundary."\r\n".$c."\"allow_comments\"\r\n\r\ny\r\n".$boundary."\r\n".$c."\"id\"\r\n\r\n\r\n".$boundary."\r\n".$c."\"action\"\r\n\r\n\r\n".$boundary."--\r\n";

// inserting content into a file

$file = "C:\file_path.txt";

$fh = fopen($file, 'w+') or die("Can't open file");

fwrite($fh,$data);

fclose($fh);

// pulling out content from a file as multipart/form-data

$data_array = array ("field" => "

$headers = array (

'POST /myhome/article/new HTTP/1.1',

'Host: url',

'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)',

'Accept: text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8',

'Accept-Language: en-us,en;q=0.5',

'Accept-Encoding: gzip,deflate',

'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',

'Keep-Alive: 300',

'Connection: keep-alive',

'Content-Type: multipart/form-data; boundary='.$boundary,

'Content-Length: '.strlen($data),

);

# Create the cURL session

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $target); // Define target site

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_HEADER, $headers); // No http head

//curl_setopt($ch, CURLOPT_REFERER, $ref);

curl_setopt($ch, CURLOPT_NOBODY, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string

curl_setopt($ch, CURLOPT_COOKIEJAR, "c:\cookie\cookies.txt"); // Tell cURL where to write

curl_setopt($ch, CURLOPT_COOKIEFILE, "c:\cookie\cookies.txt"); // Tell cURL which cookies

//curl_setopt($ch, CURLOPT_USERAGENT, $agent);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, "$data_array");

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects

curl_setopt($ch, CURLOPT_MAXREDIRS, 4);

# Execute the PHP/CURL session and echo the downloaded page

$page = curl_exec($ch);

$err = curl_error($ch);

$info =curl_getinfo($ch);

# Close the cURL session

curl_close($ch);

print_r($err);

print_r($info);

?>

解决方法:

您尚未发布一致/一致的代码流.最后一点是您期望发生的事情吗?或者是其他东西?

您说“它没有用”-抱歉,我们需要更多信息,才能帮助您诊断问题.

>是否有错误消息?

>您试图将文件发布到什么位置?

>接收URL是否可以使用HTTP表单?

>您能否举例说明其适用的形式?

>您是否在接收端控制代码?

>您怎么知道它“不起作用”?

>您收到错误消息吗?如果是这样,该怎么办?

操作应该很简单:

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_URL, $THE_REMOTE_URL_YOU_ARE_POSTING_TO);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, array(

"field" => "@c:\\file_location.txt", // note the double \\ when used within double quotes

'a_number' => 12345.

'a_string' => "hello world"

));

$response = curl_exec($ch);

?>

错误的路径可能会解释为什么curl_getinfo()没有告诉您您希望看到的内容-查看实际的数据交换可能会更有帮助.

C.

标签:php,curl

来源: https://codeday.me/bug/20191009/1881997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值