新浪股票实时数据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