2017-06-12 35 views
0

我写了一个代码来作为Web计数器工作。它在OutPutStream中生成javascript输出,因此我可以在另一个网站中使用该脚本来为其提供一个免费的网站计数器。 问题是,当我想要获取引用者时,它将返回放置脚本的页面而不是真正的引用者。 这里是我的代码:身体如何在C中获取父URL引用者#

的html代码:

<script type="text/javascript" language="javascript" src="counter.aspx?siteid=2"></script> 

和counter.aspx.cs:

using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.Linq; 
    using System.Net; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 


    public partial class counter : System.Web.UI.Page 
    { 

     protected void Page_Load(object sender, EventArgs e) 
     { 

      Response.ContentType = "text/javascript"; 
       UICulture = "en-US"; 
       Culture = "en-US"; 
       int siteid = int.Parse(Request.QueryString["siteid"].ToString()); 
       string pubIp = new System.Net.WebClient().DownloadString("https://api.ipify.org"); 
       var ipResponse = GetCountryByIP(pubIp); 
       HttpBrowserCapabilities browse = Request.Browser; 
       string platform = browse.Platform; 
       string browsername = browse.Browser; 
Counter cnt = new Counter(); 
      var counter = cnt.GetCounter(siteid, DateTime.Now, pubIp, Request.UrlReferrer.ToString(), platform, browsername, "", ipResponse.Country); 
        string text = "document.write('<div id=\"ShortCounter\" style=\" margin: 0px auto;width: 100px;min-height: 100px;font-family: Tahoma;font-size: x-small;background-color:" + counter.BackColor + ";color:" + counter.color + ";border:" + counter.BorderSize + "px " + counter.BorderStyle + " " + counter.BorderColor + ";\">" + 
      "<div style=\"padding: 8px;\">" + 
       "You Are Visitor Number:<br />" + 
       counter.CounterNumber.ToString("N0") + 
       "<br />" + 
       "Today" + 
      "<br />" + 
       counter.Today.ToString("N0") + 
       "<br />" + 
       "This Week" + 
      "<br />" + 
       counter.ThisWeek.ToString("N0") + 
       "<br />" + 
       "This Month" + 
      "<br />" + 
       counter.ThisMounth.ToString("N0") + 
       "<br />" + 
      "</div>" + 
      "<div style=\"width: 100%; background-color: darkred; text-align: center; padding-top: 2px; padding-bottom: 2px;\">" + 
       Request.UrlReferrer.ToString() + 
      "</div>');"; 

        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text); 

        Response.OutputStream.Write(bytes, 0, bytes.Length); 
    } 

的问题是:让我们假设我在xyz.com (其他网站),然后点击链接并转至zzz.com/1.html(我的网站)。 zzz.com/1.html页面包含我之前提到的脚本,我想知道zzz.com/1.html引用程序是xyz.com,但是我的c#页面显示我zzz.com作为引用程序是有道理的。我怎么能得到zzz.com/1.html引用者?! 我希望解释已经足够。

感谢

+0

您必须创建一个JavaScript函数,并使用你的脚本抓住引用者,因为脚本文件被zzz.com调用而不是xyz.com,其中zzz.com被xyz.com调用 – Krishna

+0

你能为我写一个样本吗?!我很沮丧...... –

+0

你有没有zzz.com/1.html的控制权? – Krishna

回答

0

尝试在查询字符串传递引荐如下

<script language="JavaScript" type="text/javascript"> 
var referer = document.referrer; 
$.getScript("counter.aspx?siteid=2&referedby="+referer); 
</script> 

现在在代码中使用该查询字符串

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 


public partial class counter : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     Response.ContentType = "text/javascript"; 
      UICulture = "en-US"; 
      Culture = "en-US"; 
      int siteid = int.Parse(Request.QueryString["siteid"].ToString()); 
      string referedby = Request.QueryString["referedby"]; 
      string pubIp = new System.Net.WebClient().DownloadString("https://api.ipify.org"); 
      var ipResponse = GetCountryByIP(pubIp); 
      HttpBrowserCapabilities browse = Request.Browser; 
      string platform = browse.Platform; 
      string browsername = browse.Browser; 
Counter cnt = new Counter(); 
     var counter = cnt.GetCounter(siteid, DateTime.Now, pubIp, referedby, platform, browsername, "", ipResponse.Country); 
       string text = "document.write('<div id=\"ShortCounter\" style=\" margin: 0px auto;width: 100px;min-height: 100px;font-family: Tahoma;font-size: x-small;background-color:" + counter.BackColor + ";color:" + counter.color + ";border:" + counter.BorderSize + "px " + counter.BorderStyle + " " + counter.BorderColor + ";\">" + 
     "<div style=\"padding: 8px;\">" + 
      "You Are Visitor Number:<br />" + 
      counter.CounterNumber.ToString("N0") + 
      "<br />" + 
      "Today" + 
     "<br />" + 
      counter.Today.ToString("N0") + 
      "<br />" + 
      "This Week" + 
     "<br />" + 
      counter.ThisWeek.ToString("N0") + 
      "<br />" + 
      "This Month" + 
     "<br />" + 
      counter.ThisMounth.ToString("N0") + 
      "<br />" + 
     "</div>" + 
     "<div style=\"width: 100%; background-color: darkred; text-align: center; padding-top: 2px; padding-bottom: 2px;\">" + 
      Request.UrlReferrer.ToString() + 
     "</div>');"; 

       byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text); 

       Response.OutputStream.Write(bytes, 0, bytes.Length); 
} 
相关问题