file_get_contents 在本地测试可以, 但在服务器上报错403

Posted skate0rdie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了file_get_contents 在本地测试可以, 但在服务器上报错403相关的知识,希望对你有一定的参考价值。

 

 

解决方法:

 

Most likely if you don‘t get any content while accessing an webpage, probably it doesn‘t want you to be able to get the content. So how does it identify that a script is trying to access the webpage, not a human? Generally, it is the User-Agent header in the HTTP request sent to the server.

So to make the website think that the script accessing the webpage is also a human you must change the User-Agent header during the request. Most web servers would likely allow your request if you set the User-Agent header to an value which is used by some common web browser.

A list of common user agents used by browsers are listed below:

Chrome: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘

Firefox: ‘Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0‘

 

 

$context = stream_context_create(
    array(
        "http" => array(
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        )
    )
);

echo file_get_contents("www.google.com", false, $context);

 

 

 

 

 

 

 

 

 

 

 

 

1

以上是关于file_get_contents 在本地测试可以, 但在服务器上报错403的主要内容,如果未能解决你的问题,请参考以下文章

php file_get_contents遇到https的处理办法

使用 file_get_contents 将本地 PHP 文件的 HTML 输出存储到字符串中

从本地 LAMP 访问 SoapClient 和 file_get_contents

为啥 file_get_contents 不起作用?

file_get_contents() 不工作

为啥 file_get_contents 比 memcache_get 快?