Categorie
Tips Web development WordPress

Risolvere dominio senza DNS in PHP (no file hosts)

Può capitare di dover fare una richiesta ad un server che risponde ad un dominio non risolvibile tramite i DNS, oppure che, se tale dominio fosse risolto tramite DNS, la richiesta non verrebbe recapitata all’indirizzo IP desiderato.

La soluzione, tipicamente, si ottiene modificando il file hosts della macchina su cui viene eseguito lo script PHP. Purtroppo però, nella maggior parte dei casi, negli ambienti di hosting condiviso / VPS non si ha accesso a tale file.

Risolvere dominio senza DNS con PHP

Vediamo quindi come poter effettuare una richiesta cURL tramite PHP, indicando come risolvere un particolare dominio.

Ecco un sample del codice:

risolvere dominio senza file hosts
Il codice è disponibile come screenshot a causa delle policy di ModSecurity

La parte interessante dello snippet precedente è la seconda riga, ovvero l’assegnazione delle proprietà CURLOPT_RESOLVE, che specifica come un determinato dominio debba essere risolto.

Nell’esempio, viene specificato che le richieste rivolte al dominio www.dariocapozzi.it sulla porta 80 (ovvero tramite il protocollo http) devono essere destinate all’indirizzo 87.78.2.132.

In seguito, impostando la direttiva CURLOPT_URL, si specifica l’endpoint a cui fare la richiesta cURL.

La soluzione proposta per risolvere un dominio senza utilizzare il file hosts può essere usata in maniera così immediata solo utilizzando il protocollo http, e non https (per motivi legati ai certificati).

Approfondimenti

Nel caso sia interessato al funzionamento dei DNS, ti potrebbero interessare i seguenti articoli:

Conclusioni

In questo articolo abbiamo visto come effettuare una richiesta cURL tramite PHP, risolvendo il dominio del destinatario della richiesta senza fare uso del Domain Name System, né operando modifica alcuna al file hosts del server che sta eseguendo PHP.