新浪股票实时数据hq.sinajs.cn接口修复
新浪股票实时数据hq.sinajs.cn突然间无法访问取不到数据,那是因为新浪股票把接口封了,在原采集数据接口里加上伪造的头部域名就可以有数据了。
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, "https://finance.sina.com.cn"); //来路
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $uri);
$response = curl_exec($ch);
if (curl_errno($ch)) {
//$errno = curl_error($ch);
curl_close($ch);
//return ['errno' => $errno];
return false;
} else {
curl_close($ch);
return $response;
}
********************
大家常用的新浪实时股票数据接口,即http://hq.sinajs.cn/list=code,最近发生了更新。直接用网页访问返回提示“Kinsoku jikou desu!”(日本语禁止访问,真有文化!)
经本人调查后发现,必须使用https访问,并且在请求头部添加Referer字段
因为之前使用@持有封基 老师的Excel模板,相关vbs的代码需要更新,添加请求头。但原来的XmlHttp对象无法伪造部分HTTP头信息(包括Referer),所以必须改为WinHttp对象才能访问
附上修改后的宏代码:
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "GET", URL, False
.setRequestHeader "Referer", "https://finance.sina.com.cn"
.Send
sTemp = .responseText
End With
打赏
- 支付宝扫一扫
- 微信扫一扫