Maison  >  Article  >  développement back-end  >  Comment définir les paramètres d'en-tête pour la requête php curl

Comment définir les paramètres d'en-tête pour la requête php curl

coldplay.xixi
coldplay.xixioriginal
2020-08-05 11:22:0110500parcourir

Comment définir les paramètres d'en-tête pour la requête curl de PHP : utilisez d'abord [CURLOPT_HTTPHEADER] pour définir un tableau de champs d'en-tête HTTP ; puis utilisez un en-tête HTTP qui ne contient que les champs d'en-tête nécessaires par défaut.

Comment définir les paramètres d'en-tête pour la requête php curl

Comment définir les paramètres d'en-tête dans la requête curl de PHP :

Lorsque les paramètres de la requête curl sont définis, CURLOPT_HTTPHEADER est défini Tableau de champs d'en-tête HTTP.

Format : array('Content-type: text/plain', 'Content-length: 100')

Exemple simple :

function http_post($sUrl, $aHeader, $aData){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $sUrl);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($aData));
    $sResult = curl_exec($ch);
    if($sError=curl_error($ch)){
        die($sError);
    }
    curl_close($ch);
    return $sResult;
}
 
$url = 'https://www.example.com;
$header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
$data = array();
$data = http_post($url,$header,$data);

Lorsque vous utilisez curl pour envoyer a Lorsqu'une URL envoie une requête HTTP, elle utilise un en-tête HTTP qui contient par défaut uniquement les champs d'en-tête nécessaires (tels que User-Agent, Host et Accept).

Mais dans certains cas, vous souhaiterez peut-être remplacer les en-têtes HTTP par défaut ou ajouter un nouveau champ d'en-tête personnalisé dans une requête HTTP. Par exemple, vous souhaiterez peut-être remplacer le champ « HOST » pour tester un équilibreur de charge, ou usurper l'identité d'un navigateur spécifique en réécrivant la chaîne « User-Agent » pour contourner certaines restrictions d'accès.

Récemment recherché les données liées à 12306 billets de train. Lorsque vous souhaitez capturer les informations restantes sur le billet, la requête locale doit définir la chaîne "User-Agent" pour emprunter l'identité d'un navigateur spécifique, sinon la requête échouera :

/**
 * 余票查询
 * leftTicketDTO.train_date: 时间
 * leftTicketDTO.from_station: 出发车站电码
 * leftTicketDTO.to_station: 目的车站电码
 * purpose_codes: 乘客类型(成人:ADULT,学生:0X00)
 * author 洋葱
 * @return bool|mixed
 */
function get_left_tickets(){
    $url = 'https://kyfw.12306.cn/otn/leftTicket/queryZ?';
//    $url = 'https://kyfw.12306.cn/otn/leftTicketPrice/query?';
    $param = [
        'leftTicketDTO.train_date' => '2019-02-13',
        'leftTicketDTO.from_station' => 'BJP',
        'leftTicketDTO.to_station' => 'SHH',
        'purpose_codes' => 'ADULT'
    ];
    $http_param = http_build_query($param);
    $url = $url.$http_param;
    //重写"User-Agent"字符串来假冒特定浏览器以解决访问限制的问题
    $header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
    $data = curl_request($url,true,'GET',null,$header);
    if($data){
        $data = json_decode($data,true);
    }
    return $data;
}

Recommandations vidéo associées : Programmation PHP du débutant au compétent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn