Как создавать http-запросы в виде записи curl?

#php #http #curl

#php #http #curl

Вопрос:

Я обработал некоторые данные HTTP-саботажа и пытаюсь создать свой собственный curl post, но, боюсь, я не могу понять, как это работает, кто-нибудь может объяснить, как мне это включить? основываясь на моих достоверных данных о несанкционированном доступе в Firefox, отправка данных на этом веб-сайте состоит из трех этапов, первый —

 URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method  POST
Type    xmlhttprequest
itemname : IFHPB-P14    
orderstep : 1
  

и после этого HTTP-заголовки, я думаю

 URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method  POST
Type    xmlhttprequest
Host : www.thisiswebsite
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept : text/html, */*; q=0.01
Accept-Language : en-US,en;q=0.5
Accept - Encoding : gzip, deflate
Referer : http://www.thisiswebsite/Nginx/index.php
Content-Type : application/x-www-form-urlencoded; charset=UTF-8 
X-Requested-With : XMLHttpRequest
Content-Length  : 30
Connection  : keep-alive
Cookie  : PHPSESSID=6gjfhn0475l26oanag1bugs025
  

и, наконец, данные отправки post

 URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method  POST
Type    xmlhttprequest
itemname : IFHPB-P14
orderstep : 3
username : testing
hdsn : datatest 
MAC  : datatestmac
  

Моя попытка с curl

curl -X POST http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
-H 'Host: www.thisiswebsite.xyz'
-H 'Connection: keep-alive'
-H 'Accept: text/html, */*; q=0.01'
-H 'Accept-Language: en-US,en;q=0.5'
-H 'Accept - Encoding: gzip, deflate'
-H 'Referer: http://www.thisiswebsite.xyz/Nginx/index.php'
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'
-H 'X-Requested-With: XMLHttpRequest'
-H 'Content-Length: 30'
-H 'Cookie: PHPSESSID=6gjfhn0475l29oanagdbugs022'
-A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
--data "itemname=IFHPB-P4amp;orderstep=3amp;username=cahyaamp;hdsn=123amp;MAC=123"

Вопрос: как мне перенести эти 3 HTTP-данные в простой curl post?

Комментарии:

1. Какое это имеет отношение к PHP? Возможно, вам захочется отредактировать ваши теги…

2. @ivanivan потому что это будет записано с помощью php-скрипта, чтобы я мог запустить его как php test.php

3. Ах, так у вас есть рабочая командная строка curl , которую вы хотите преобразовать в PHP curl?

4. @ivanivan Да, именно так, мой мужчина!

Ответ №1:

Создайте свои данные в виде ассоциативного массива, чтобы создать пары ключ / значение.

Создайте свои заголовки в виде массива.

Инициализируйте curl, установите необходимые параметры, выполните, захватите выходные данные, выключите curl, распечатайте результаты.

 <?php

// build your data as an associative array for the keys
// and yes, you can use multi-dimensional arrays, etc
$data=array();
$data['item']="abc123";
$data['orderstep']=3;
$data['username']="joe.user";
$data['hsdn']=545;
$data['MAC']="bigmac";

// you can set options for various headers as needed, just
// do all of them  as an array()
$headers=array();
$headers[]="Accept: text/html,*/*";
$headers[]="Referer: http://some.example.com";
$headers[]="Content-Type: application/x-www-form-urlencoded;charset=UTF-8";
// and so on...

// set the URL for your POST to go to
$url="http://api.example.com/end/point";

// now initialize curl
$ch=curl_init();
// set the options for your headers,
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
// and http method
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
// do you want to capture any returned output from server?
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
// what URL to call
curl_setopt($ch,CURLOPT_URL,$url);
// what data to send
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
// make it so!
$curl_result=curl_exec($ch);
// done with curl
curl_close($ch);
// show results
print_r($curl_result."n");

?>
  

Комментарии:

1. как скрутить 2 данные в одном скрипте? я имею в виду, это другой пост, поэтому я должен сначала опубликовать этот, а затем другой

2. @CahyaDarmaWijaya просто, перед закрытием curl дескриптора просто установите / измените параметры по мере необходимости (URL и данные?), а затем повторно выполните.

3. что, если я использую $data1=array(); $data=array(); тот же $data массив, который вы мне дали, но $data1 выполняемый первым после этого $data

4. пожалуйста, проверьте мой комментарий

5. @CahyaDarmaWijaya да, вы можете это сделать. поиграйте с этим.