用浏览器并发请求数访问网址时,请求头是根据什么生成的

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我们在从一个网站点击链接进入另一个页面时,浏览器会在header里加上Referer值,来标识这次访问的来源页面。但是这种标识有可能会泄漏用户的隐私,有时候我不想让其他人知道我是从哪里点击进来的,能否有手段可以让浏览器不要发送Referer呢?我试过用window.location.href='...'来跳转,也还是有Referer。大家有什么好办法吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
function open_without_referrer(link){
document.body.appendChild(document.createElement('iframe')).src='javascript:&&script&top.location.replace(\''+link+'\')&\/script&&';
}如果如果是新窗口打开,可以使用如下代码:function open_new_window(full_link){
window.open('javascript:window.', '&script&location.replace(&'+full_link+'&)&\/script&');
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
基于,可以在a标签内使用rel=&noreferrer&来达到这一目的。
目前大部分。
提供跨浏览器支持的更好的办法是使用一个第三方的库,它可以自动识别浏览器并选择最优方案。补充
Opera并没有提供可以实现不发送referrer的方法,noreferrer.js的解决方案是利用google的url中转。在国内的网络环境下,你懂的。。。
可以自己搭建一个跳转的页面,或者用其他站点的url跳转接口。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
有个折中的办法// 例子, 比如index.html&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.1//EN& &http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&&
&html xmlns=&http://www.w3.org/1999/xhtml& xml:lang=&zh&&
&meta http-equiv=&Content-Type& content=&text/charset=UTF-8& /&
&title&转向例子&/title&
&style type=&text/css&&
#example, iframe.hidden {
&script type=&text/javascript& src=&/jquery-1.8.2.min.js&&&/script&
&script type=&text/javascript&&
$().ready(function(){
$(&#example&).show();
$(document.body).on('click', 'a[rel~=&hide_ref&]',function(){
var url = '/redirect.html#!'+ encodeURI(this.href);
$('&iframe class=&hidden& src=&'+url+'&&&/iframe&').appendTo($(document.body));
&div id=&example&&
&h1&正常链接&/h1&
&a href=&http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml&&http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml&/a&
&h1&隐藏referer&/h1&
&a href=&http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml& rel=&hide_ref&&http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml&/a&
&/html&// 这个是中间文件, redirect.html&script type=&text/javascript&&
var hash = location.
location.hash = '';
if(hash.substring(0,2)==='#!') {
var url = decodeURI(hash.substring(2));
top.location.href =
&/script&这样只要点击rel里带hide_ref里链接, 都会生成一个iframe, iframe里读取location.hash(再重置), 然后top.location.href做转向, 无论从哪个地址点过去, 都是那个iframe的url
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
今天看查看blog refer的时候,发现很多的是来自跳转页的,所以觉得LZ的解决方法可以跟google学学,弄一个跳转页,这样别人只知道是从一个跳转页过来的,不知道具体是那个网页了。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
&meta name="referrer" content="never"& &!-- 没写错 --&
注意:不带Referer头的话,百度统计js会拒绝返回正常内容。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
提供一个技巧:
在 Chrome 浏览器中开一个 隐身窗口 访问你需要访问的地址。
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
Host: pubs.rsc.orgUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/ Firefox/36.0Accept: text/html,application/xhtml+xml,application/q=0.9,/;q=0.8Accept-Language: zh-CN,q=0.8,en-US;q=0.5,q=0.3Accept-Encoding: gzip, deflateReferer: Cookie: ShowEUCookieLawBanner= __utma=; __utmz=.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); OAX=cFSCsVTA+KgABIGI; ki_t=9%3B0%3B2%3B11%3B64; ki_r=; _ga=GA1.2.; __atuvc=2%7C4%2C1%7C5%2C8%7C6%2C0%7C7%2C10%7C8; X-Mapping-hhmaobcf=3D85FAB7AD1C005DA6212A; ASP.NET_SessionId=e2rq4u5ezbhocigv02b1mpjnConnection: keep-alive
这里面有几个必须带的?
除了这些,还有哪些注意的?
......................补充..........................
功能:用scrapy去爬数据
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用个phantomjs老老实实模拟操作 如果你不想去算各种防机器人的参数。。phantomjs本身就是无界面浏览器
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Host必须有。
一般网站不会检查User-Agent,但以防万一还是把User-Agent设置成一些主流的浏览器的UA。尤其是那些手机站,模拟手机带个苹果的safari UA就好了。这些东西百度一下就能找到,或者是Chrome的手机模拟器也有。
Accept、Accept-Language、Accept-Encoding这三个一般不检查,尤其是Accept-Encoding,只是一个是否支持gzip传输的协议头
Referer大部分网站会检查,一般只要设置成你抓包时候得到的Referer就好了(或者是同域名的)
Cookie一般都要,尤其是ASPX-C#,那个ASP.NET_SessionId记得提前获取。这些东西是用来记录你的“登录状态”的。那些 “__”开头的就不需要了,一般是谷歌、百度统计什么的。
Connection一般不检查。也试过检查的,最好带上。
其它协议头都建议带上,尤其是那些来路不明的,一定要知道它是怎么来的(例如跟csrf有关的协议头)然后都给带上
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
紧紧是模拟,不涉及程序自动跑的话,用fiddle抓一下,然后修改为你项要的参数模拟发就OK了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
模拟就按照抓取的参数设置就行了,其实大部分时候是因为请求频率问题才被发现.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
chrome的开发者工具上,右键任意请求会有一个“Copy as cURL”,可以复制出chrome发起的http请求,包含所有header,希望可以帮到你。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
当然是全带最逼真…
问题里面贴的这些里面Host通常是必须的,Referer和UA是经常影响逻辑比较重要的,Cookies是带状态(比如用户登录)所必须也相对最复杂的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
采用phantomjs或者selenium等
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
把抓到的头都带上
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用google插件postman或者自己去找apache的httpclient包
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:当我们在浏览器中输入一个网址,比如,浏览器就会加载出百度的主页。那么浏览器背后完成的具体是怎么样的呢?
总结起来大概的流程是这样的:
(1)浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP
(2)然后通过IP地址找到IP对应的服务器后,要求建立TCP连接
(3)浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包
(4)在服务器收到请求之后,服务器调用自身服务,返回HTTP Response(响应)包
(5)客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。
就可以用下面的这幅图来进行解释
1. DNS解析
在浏览器中输入的是一个网址,是不能直接用来进行连接的,因而就要使用DNS地址解析将输入的URL网址转换为IP地址。查找的流程图是这样的
具体的查找过程和策略可以分为下面这几步:
(1)在浏览器中输入域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
(2)如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
(3)如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
(4)如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址()给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找域服务器,重复上面的动作,进行查询,直至找到主机。
(6)如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
2. Socket建立连接
当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。
3. 发送HTTP请求
连接成功建立后,开始向web服务器发送请求,当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:
(1)请求方法URI协议/版本
(2)请求头(Request Header)
(3)请求正文
下面是一个HTTP请求的例子:
GET /sample.jsp HTTP/1.1
Accept:image/gif.image/jpeg,*
请求方法URI协议/版本
请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1``
以上代码中“GET”代表请求方法,/sample.jsp表示URI,HTTP/1.1“`代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
Accept:image/gif.image/jpeg.*
3.3 请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
3.4 HTTP请求方法:GET方法与POST方法
3.4.1 GET方法
GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大
3.4.2 POST方法
POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。
3.5 各种HTTP请求的含义
通过请求URI得到资源
用于添加新的内容
用于修改某个内容
删除某个内容
用于代理进行传输,如使用SSL
询问可以执行哪些方法
部分文档更改
创建集合(文件夹)
用于远程诊断服务器
类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
4. 服务器响应
应答 web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了告知浏览器,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
4.1 HTTP响应报文头
HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:
(1)协议状态版本代码描述
(2)响应头(Response Header)
(3)响应正文
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct:42 GMT
Content-Length:112
&HTTP响应示例&
Hello HTTP!
协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
HTTP/1.1 200 OK
响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
响应正文响应正文就是服务器返回的HTML页面:
&HTTP响应示例&
Hello HTTP!
响应头和正文之间也必须用空行分隔。
4.2 HTTP应答码
HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX - 重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX - 客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX - 服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500
对于我们Web开发人员来说掌握HTTP应答码有助于提高Web应用程序调试的效率和准确性。
5. 关闭连接
当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
本文已收录于以下专栏:
相关文章推荐
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。
本文将更深入的研究当你输入一个网...
我们来看当我们在浏览器输入:81/mytest/index.html,幕后所发生的一切。
首先http是一个应用层的协议,在这个层的协议,只是一种通讯规...
from: http://mangguo.org/browser-cache-mechanism-detailed/
浏览器缓存
浏览器缓存的知识是前端工程师必须要掌握的,因为这些知识...
这几天看一个讲解一个网页从我们输入地址到显示在我们面前的一个讲解,是我对http又有了一个完整的了解,现在做一下整个流程的记录,虽然不是很详细,但是整个过程是完整的。如果不对,请指正!
我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西,它可能是百度之类的搜索页面,或是一个挤满了文字和图片的门户网站。从我们打开浏览器,到我们看到我们想看的内容,...
最近接触到了整个网站的开发流程,所以就总结一下网站的运行机制,对网络应用如何工作有一个完整的层次化的认知。
首先,你得在浏览器里输入要网址:
例如百度或者facebook。
个http请求的详细过程
我们来看当我们在浏览器输入:8080/mydir/index.html,幕后所发生的一切。
首先http是一个应用...
在Java应用程序中通常有一个About的页面,在这个页面中通常会包含一个软件提供公司的网址
如果客户可以点击该网址然后直接打开对应的网站会是一个比较好的体验效果,Java中打开网址的方法如下:...
1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把变成ip,如果url里不...
首先在activity_main.xml中进行布局,在这里我就以最普通的界面为例
    xmlns:tools=&/tools&
    ...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 浏览器访问网址的过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信