file_get_contents () obtiene 403 de api.github.com cada vez

Me llamo a mí mismo un desarrollador PHP experimentado, pero este es uno que me vuelve loco. Estoy tratando de obtener información de lanzamiento de un repository para mostrar alertas de actualización, pero sigo devolviendo 403 errores. Para simplificarlo, utilicé el uso más simple de la API de GitHubs: GET https://api.github.com/zen . Es una especie de hola mundo.

Esto funciona

  • directamente en el navegador
  • con un simple curl https://api.github.com/zen en una terminal
  • con un PHP-Github-API-Class como php-github-api

Esto no funciona

  • con un simple file_get_contents() de un PHP-Skript

Este es mi código simplificado completo:

  

El navegador muestra Warning: file_get_contents(https://api.github.com/zen): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden Warning: file_get_contents(https://api.github.com/zen): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden , la variable $content es un booleano y false .

Supongo que me falta algún tipo de campo de encabezado http, pero tampoco puedo encontrar esas informaciones en los API-Docs , ni usar mi curl terminal, llamar a ningún archivo de encabezado especial y funciona.

¿Tienes alguna pista? ¡Gracias por adelantado!

Esto sucede porque GitHub requiere que envíe el encabezado UserAgent. No necesita ser algo específico. Esto lo hara:

 $opts = [ 'http' => [ 'method' => 'GET', 'header' => [ 'User-Agent: PHP' ] ] ]; $context = stream_context_create($opts); $content = file_get_contents("https://api.github.com/zen", false, $context); var_dump($content); 

El resultado es:

 string(35) "Approachable is better than simple." 
    Intereting Posts