2017-10-21 106 views
1

我想为95%的站点file_get_content回复站点数据&,curl工作得很好,但对于少数站点来说,它无法工作,无论我尝试什么。我试图定义适当的用户代理,将SSL验证更改为false,但没有任何工作。但是wget的与SSL支持编译file_get_contents,curl,wget失败,403响应

测试网站,它失败,禁止https://norskbymiriams.dk/

wget的是无法复制SSL站点。与wget的-V

检查我想这些codes.none工作了这一特定的网站

file_get_contents 

$list_url = "https://norskbymiriams.dk/"; 
$html = file_get_contents($list_url); 
echo $html; 


curl 


$handle=curl_init('https://norskbymiriams.dk'); 
curl_setopt($handle, CURLOPT_HEADER, true); 
curl_setopt($handle, CURLOPT_VERBOSE, true); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); 

curl_setopt($handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"); 
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); 
$content = curl_exec($handle); 

echo $content; 

任何帮助将是巨大的

+0

其简单的HTTP状态代码403意味着你没有访问/权限使用/得到它.. –

+0

@AlwaysSunny其从浏览器 – Steeve

+0

@Steeve我认为你是被封IP(IP和访问的几个因为它在浏览器中工作)。我测试了你的代码(从$ handle line开始的代码,它的功能非常好,当我调用它时,我得到了200 OK。 – besciualex

回答

1

一些网站分析非常不错的请求。如果有一个东西,它使该Web服务器认为你是一个爬行机器人,它可能会返回403

我想试试这个:

  1. 从浏览器发出请求,看到所有的请求头,并将它们放在我的curl请求中(模拟真实的浏览器)。 enter image description here

  2. 我卷曲的要求是这样的:

卷曲 'https://norskbymiriams.dk/'
-H '升级不安全,要求:1'
-H “的User-Agent :Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36(KHTML,如Gecko)Chrome/61.0.3163.100 Safari/537.36'
-co压缩

请试试看。有用。

  1. 您可以在Chrome中提出请求,并使用Developer工具中的Network选项卡检查页面请求。如果你右键点击它,你会看到复制为卷曲 enter image description here

  2. 因此,在实际的卷曲要求单独测试每一个标题,看看哪个是缺少的环节,然后将其添加并继续你的爬行。

+0

谢谢。我想我必须保持活力。 – Steeve