PHP : Comment utiliser le mode curl pour demander un nom de domaine en utilisant une adresse IP spécifiée pour accéder à un serveur

        Récemment, j'ai rencontré un problème, c'est-à-dire comment spécifier une certaine IP à laquelle accéder lorsque curl demande un certain nom de domaine, car souvent notre nom de domaine correspond à un cluster, et il existe de nombreuses IP de serveur, et ce n'est pas nécessairement l'accès tu veux. J'ai besoin d'un serveur, alors comment le résoudre ?

Par exemple : dans des circonstances normales, en supposant que nous envoyions une requête comme celle-ci, comment spécifier le contenu du serveur IP pour accéder au 114.253.192.75

$url = "https://www.diekaisanyue.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //https请求,不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content = curl_exec($ch);
echo $content;

Solution:

1. Configurez le fichier /etc/host et ajoutez le pointeur vers 114.253.192.75 www.diekaisanyue.com. Bien que cela puisse produire cet effet, il n'est pas propice à la maintenance. On estime qu'un collègue ne saura pas que l'hôte a été configuré.

2. Modifiez le fichier vhost www.diekaisanyue.com déployé sur le serveur 114.253.192.75 et ouvrez un port séparé, tel que le port 8888. Nous pouvons ensuite utiliser directement 114.253.192.75:8888 pour l'accès, mais ce n'est pas très pratique. la prochaine fois, changer de serveur nécessite d'ouvrir un port et de le reconfigurer.

3. Remplacez le nom de domaine dans l'URL de la demande par IP, puis ajoutez les informations d'en-tête de la demande d'hôte pour effectuer la demande. L'avantage de cette méthode est que vous n'avez rien à modifier ni à configurer. Vous pouvez directement spécifier le Serveur IP auquel vous souhaitez accéder via Les informations sur l'hôte contenues dans l'en-tête sont utilisées pour le couplage des services.

$url = 'https://114.253.192.75/index.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: www.diekaisanyue.com"));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content = curl_exec($ch);
echo $content;

4. PHP5.5 ou supérieur prend en charge l'utilisation de CURLOPT_RESOLVE pour définir l'adresse IP correspondant à l'hôte, mais cela ne semble pas fonctionner après les tests.

$url = 'https://www.diekaisanyue.com/index.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RESOLVE, ["www.diekaisanyue.com:443:114.253.192.75"]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content = curl_exec($ch);
echo $content;

おすすめ

転載: blog.csdn.net/panjiapengfly/article/details/126914864