我浏览了一个名为BSEINDIA.com的网站(http://www.bseindia.com/stockreach/stockreach.htm?scripcd=532667),我注意到点击Get Quote它似乎触发了Ajax请求并获得所选股票的价格。我试图将此请求分开并单独启动它,但它似乎不起作用。
我复制了同一页面的HTML代码(http://www.bseindia.com/stockreach/stockreach.htm?scripcd=532667) 任何指针为什么这不起作用,是否有某种身份验证正在进行,我甚至不是这个网站的成员?
以下是我正在尝试做的事情
<script type="text/javascript">
var oHTTP=getHTTPObject();
var seconds = Math.random().toString(16).substring(2);
if(oHTTP)
{
oHTTP.open("GET","http://www.bseindia.com/DotNetStockReachs/DetailedStockReach.aspx?GUID="+seconds+"&scripcd=532667",true);
oHTTP.onreadystatechange=AJAXRes;
oHTTP.send(null);
}
function AJAXRes()
{
if(oHTTP.readyState==4)alert(oHTTP.responseText);
}
function getHTTPObject(){var obj;
try{obj=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){try{
obj=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e1){obj=null;}}
if(!obj&& typeof XMLHttpRequest!='undefined'){
try{obj=new XMLHttpRequest();}
catch(e){obj=false;}}return obj;}
</script>
在这里找到我的答案 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.referer%28VS.71%29.aspx
答案 0 :(得分:2)
实际上,这很容易。发送HTTP请求时,会随请求一起发送名为Referrer
的标头。 Referrer
基本上是发起请求的网页的网址。
BSEINDIA检查Referrer
值以确保请求来自其网站。如果是,则发送数据。如果没有,它会发送404页面。
您可以通过在浏览器中停用Referrer
来轻松测试该理论。在Firefox中,您可以通过键入about:config
并将network.http.sendRefererHeader
设置为0
来实现此目的。
如果您仍想获取数据,则需要编写一个脚本(使用PHP或其他语言),该脚本将使用正确的Referrer
发出请求并输出结果。
答案 1 :(得分:0)
可能存在某种形式的IP限制,用于访问从通过自己的脚本访问数据的第三方脚本中保存自己所需的文件/数据。那就是我要做的事。
答案 2 :(得分:0)
可能是Http Referrer。确保您没有违反任何版权限制。