2013-04-07 16 views
1

我正在制作一个抓取脚本。它适用于大多数网站,但我无法访问特定的SSL网站。由于SSL错误,无法HTML刮网站

这里是我的代码:

if (!extension_loaded('openssl')){ 
    // not occurring 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://www.chase.com/'); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

$result = curl_exec($ch); 

if($result === false) 
{ 
    $err = curl_error($ch); 
    //$err = SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054 
} 

$result总是FALSE,它显示了此错误消息:

SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054 

但它的工作原理上有SSL其他网站。我也检查了phpinfo(),cURL和OpenSSL是活跃的。我正在使用WAMP,有什么想法?

+1

为什么你想刮银行网站? – 2013-04-07 01:47:43

回答

2

您需要设置一个Useragent。我测试了和没有一个,它解决了这个问题。看起来Chase想要在请求中提供UA。

所以补充一点:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US)'); 
+0

,但是您确实没有看到SSL错误? – 2013-04-07 08:52:01

+0

哇你是对的:/ 谢谢! PS:我实际上正在设置一个useragent(我只是删除了一些我认为没用的行),但我认为我没有正确设置它,你的作品! – xtrimsky 2013-04-07 12:02:36

+0

@DanielStenberg是的,我得到了同样的错误。当然,我必须添加'echo $ err;'。 – 2013-04-07 12:59:51

1

我只要使用以下PHP librery解决问题。

https://github.com/rmccue/Requests

[您的基于Linux的服务器上使用这个库的代码,可能是它不会在XAMPP或WAMP工作]