给出这个链接:http://clk.tradedoubler.com/click?p=113177&a=89693&g=189788889&url=http://track.adform.net/C/?bn=8997990;cpdir=http://www.tele2.se/mobilt-bredband.html?utm_source=tradedoubler&utm_medium=Affiliate&utm_campaign=Omnitel_Tradedoubler
首先,浏览器向http://clk.tradedoubler.com/click?p=113177&a=89693&g=189788889
&url=
作为一种重定向查询参数,重定向指的是另一个远程 URL:
http://track.adform.net/C/?bn=8997990;cpdir=http://www.tele2.se/mobilt-bredband.html?utm_source=tradedoubler&utm_medium=Affiliate&utm_campaign=Omnitel_Tradedoubler
在此 URL 中,查询参数;cpdir=
还可用作重定向查询参数,重定向指的是:
http://www.tele2.se/mobilt-bredband.html?utm_source=tradedoubler&utm_medium=Affiliate&utm_campaign=Omnitel_Tradedoubler
所有这些参数都附加在查询字符串的其余部分前面,我不明白其含义:?utm_source=tradedoubler&utm_medium=Affiliate&utm_campaign=Omnitel_Tradedoubler
&url=
和有什么区别;cpdir=
?
答案1
你的分析是错误的。不是一种“重定向”。顺便说一句:这个答案中的每一条水平线都表示我对你的知识的假设的一次飞跃:我从最基础的开始,然后随着每条连续的水平线转向更高级的主题。
使用以下软件工具Burp 代理或者圣甲虫。这些通常是安全测试工具,但你正在尝试学习与网址和HTTP,这些可能有助于您从经验中学习。设置其中一个代理来拦截 Web 浏览器中的 URL。最容易使用的代理是 Mozilla Firefox,您可以安装代理切换插件,例如FoxyProxy 标准版。
当您点击帖子中的原始链接时,实际发生的情况是您的 Web 浏览器:
- 查询域名系统 (DNS)确定映射到的 IP 地址
clk.tradedoubler.com
- 建立一个 TCP 套接字,并将 IP 地址映射到
clk.tradedoubler.com
发送如下所示的 HTTP GET 请求:
获取/点击?p=113177&a=89693&g=189788889&url=http://track.adform.net/C/?bn=8997990;cpdir=http://www.tele2.se/mobilt-bredband.html?utm_source=tradedoubler&utm_medium=Affiliate&utm_campaign=Omnitel_TradedoublerHTTP/1.1
主机:clk.tradedoubler.com
内容类型:...
内容长度:...
Cookie:...
用户代理:...
其中的...
信息被相关字段替换。
为了理解这句话的意思,你必须理解 的含义make an HTTP Request
。这正是正在发生的事情。
URL 被解构,以便URL 的整个查询字符串,除部分外http://domain.com
,均发送到远程服务器。
现在你必须意识到的是远程服务器可以利用这些信息做任何它想做的事情. 事实并非如此有用它做任何事情。除了无限的可能性之外,它还可以:
- 忽略信息
- 向查询字符串中指定的参数中的 URL 发送 HTTP 请求
- 向您的计算机发送 HTTP 响应,指示重定向到查询字符串中的某个 URL
- 将信息存储在数据库中
- 致电美国总统并使用文本阅读器阅读 URL
- 使用查询字符串输入作为随机数生成器来确定在 Campbell 的字母汤罐头从生产线上滚下来时要输出哪些字母
- 等等...
只是&url=http://...
查询字符串的一部分发送到clk.tradedoubler.com
。为了知道此主机如何处理该查询字符串,您必须查看服务器上处理此信息的软件的源代码clk.tradedoubler.com
。您能从“黑匣子”的角度看,HTTP 响应clk.tradedoubler.com
(如果有)您的浏览器在发送此信息后收到HTTP 请求。为此,我建议您参考我上面的建议,使用 Burp 或 WebScarab。
但你应该不是在一般情况下,假设远程服务器正在使用查询参数中传递给它的信息执行某些特定操作。你应该假设的是,它可能执行最差它可以用它来做的事情——这样思考至少可以帮助你发现它可能对你的个人信息造成的任何潜在威胁。
一旦你理解了这些基本概念,你就可以开始了解这个 URL 到底在做什么。它显然是网络广告系统的一部分。utm
参考Urchin 跟踪器模块它已集成到 Google AdWords 系统中(至少在其 API 中;对于后端,谁知道呢)。因此,至少可以安全地假设此请求正在尝试存储有关您的网页浏览习惯的一些信息,以便为您提供相关广告。
关于这个单独的问题:
&url=
和有什么区别;cpdir=
?
&url=
是名为 的查询参数的开始,url
其分隔符是&
。
;cpdir=
是名为 的查询参数的开头,cpdir
其分隔符为;
。嵌入 URL 中使用的分隔符是 ,;
但功能上等同于&
。之所以使用它,是因为如果&
使用 ,它会使解析原始 URL 的 HTTP 服务器感到困惑,认为 之后的所有内容&
都是新 URL 参数名称的开头外部 URL。
这就像其中一个俄罗斯套娃类型问题,即 URL 中又包含 URL。您需要某种方法来防止接收“外部”URL 的 HTTP 服务器将传递给内部 URL 的参数解释为属于外部 URL 的参数。这就是从 切换到 的原因&
。;
有关查询字符串的格式和语法的更多信息,请参阅维基百科关于查询字符串的条目。