精华内容
下载资源
问答
  • 欢迎关注”生信修炼手册”!对于静态网页,我们只需要访问对应的URL就可以获得全部的数据了,动态网页则没有这么简单。比如以下网站http://q.10jqka.com.cn/zjhhy/d...

    欢迎关注”生信修炼手册”!

    对于静态网页,我们只需要访问对应的URL就可以获得全部的数据了,动态网页则没有这么简单。比如以下网站

    http://q.10jqka.com.cn/zjhhy/detail/code/M/

    在浏览器中打开,我们可以看到对应的表格数据

    在浏览器中,通过翻页按钮,可以查看不同页面的内容

    但是你会发现,在翻页的过程中,页面的url并没有发生变化,这说明这个表格中的数据是动态加载的。目前,常用的动态加载技术有以下两种

    1. ajax

    2. js

    通过构建ajax或者js请求,来获得对应的数据。对于这些动态加载的数据,我们就不能只请求网页的url了,而是需要找到上述两种请求的链接,一些简单的动态加载链接,可以通过浏览器的调试工具来快速查找

    1. ajax

    ajax请求通过network选项中的xhr请求来查找,在上述网站进行翻页,可以看到如下如下所示的ajax请求链接

    直接用爬虫或者ajax链接,就可以返回对应的数据了。

    2. js动态加载

    js请求通过network选项中的js请求来进行查找,在下列网站中,其翻页的数据就是通过js请求来动态加载的

    https://finance.sina.com.cn/stock/reportch/jinqilin.shtml

    js请求的示例如下 

    通过分析请求的url规律,可以帮助我们批量获取对应的数据连接。对于简单的ajax和js请求,通过浏览器调试工具,可以快速的获取数据。

    ·end·

    —如果喜欢,快分享给你的朋友们吧—

    原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

    本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

      更多精彩

      写在最后

    转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

    扫描下方二维码,关注我们,解锁更多精彩内容!

    一个只分享干货的

    生信公众号

    展开全文
  • 基于PlayWright实现对js渲染的动态网页进行抓取,包含网页源码,截图,网站入口,网页互动过程等,支持优先级任务调度。 crawloop目前支持一下特性 原生浏览器环境,支持chrome,firefox,协程处理调度任务 完整DOM...
  • Apify参与者分析特定URL上的网页。 您可以在Apify的试用它的工作方式。 这个参与者从主要响应中提取HTML和javascript变量,并从XHR请求中提取HTML / JSON数据。 然后,它分析加载的数据: 它执行对初始HTML(直接从...
  • 目录 1、URI与URL 2、超文本hypertext 3、HTTP和HTTPS 4、HTTP请求过程 5、请求方法 6、请求头 ...9、网页基础 1、URI与URL URI是统一资源标志符(URL是URI的子集,URI还包括一个子类为URN统一资源名...

    目录

    1、URI与URL      2、超文本hypertext

    3、HTTP和HTTPS         4、HTTP请求过程

    5、请求方法                    6、请求头

    7、请求体                        8、响应

    9、网页基础


     

    1、URI与URL

    URI是统一资源标志符(URL是URI的子集,URI还包括一个子类为URN统一资源名称,它只命名资源而不指定如何定位资源)

    URL统一资源定位符(如:https://baidu.com/wd=leebeloved是一个URL同样也是一个URI,拆解后为:访问协议https,访问路径baidu.com,资源名称wd=leebeloved)

    2、超文本hypertext,浏览器所展现的网页为超文本解析而来的,网页源码为HTML代码。

    3、HTTP和HTTPS

    HTTP称为超文本传输协议,是从网络传输超文本数据到本地浏览器的协议。而HTTPS为安全版的HTTP,在HTTP下加入ssl层,HTTPS传输内容都是经过ssl加密的。

    HTTPS作用分为:1、建立安全的信息通道;2、保证网站的真实性

    4、HTTP请求过程

        HTTP请求过程:从输入URL到网页呈现的过程是:浏览器→发送请求→网站所在服务器→网站处理、解析请求→返回相应的响应→传回浏览器(一个网站的请求在开发者工具中的参数:name请求名称,通常为URL最后一部分;status响应状态码;type请求的文档类型;initiator请求源,用来标记求情是由哪个对象或者进程发起的;size从服务器下载或者请求的资源大小;time请求发起到获取响应所用的时间;waterfall网络请求的可视化瀑布流)

         网页开发者工具栏:General部分,request url为请求URL,request method为请求方法,status source为响应状态码,remote address为远程服务器地址和端口,referrer policy为referrer判别策略,response headers为响应头,request headers为请求头(请求头中包含有浏览器标识、cookies、host等)

    5、请求方法

    客户端向服务端发送请求分为4部分:请求方法、网址、头、体。常用的请求方法是get和post。

        5.1、get请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中(URL中看不到)。
        5.2、GET请求提交的数据最多只有1024字节,而POST方式没有限制。

    6、请求头包含的信息

    用于说明服务器要使用的附加信息,比较重要的信息有 Cookie、 Referrer、user-agent等。
        6.1、 Accept:请求报头域,用于指定客户端可接受哪些类型的信息;
        6.2、Accept-language:指定客户端可接受的言类型;
        6.3、Accept- Encoding:指定客户端可接受的内容编码;
        6.4、Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始务器或网关的位置;
        6.5、Cookie:也常用复数形式 Cookies,网站为了辨别用户进行会话跟踪面存储在用户本地的数据。它的主每功能是维持当前访问会话。 Cookies里有信息标识了我们所对应的服务器
    的会话,每次测览器在请求该站点的页面时,都会在请求头中加上 Cookies并将其发送给服务器,服务器通过 Cookies识别出是我们自己,并且查出当前状态是登录状态。所以返同结果就是登录之后才能看到的网项内容。
        6.6、Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
        6.7、User- Agent:简称UA,它是一个特殊的字符事头,可以使服务器识别客户使用的操作系统及版本,浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为览器;如果不加,很容易被识别出是爬虫。

    7、请求体:一般承载的内容是post请求中的表单数据,get请求的请求体为空

    8、响应:服务端返回到客户端,分为响应状态码、头、体

    响应状态码:200表示服务器正常响应,404表示页面未找到,500代表服务器内部发生错误,403服务器拒绝此访问请求,禁止访问。

    响应体:做爬虫时候主要通过响应体得到网页源码、json数据等。

    9、网页基础

    9.1 网页组成:

    html描述网页的语言,网页包括文字、图片、视频、按钮等。(不同类型文字通过不同类型标签表示,img图片、video视频、p段落、div布局标签,整个网页框架是各种标签不同的排列和嵌套的组合);

    JavaScript:脚本语言,html与css配合使用提供给用户的只是静态信息,缺乏交互性;

    css:层叠样式表,层叠指在HTML中引用了数个样式文件,并且样式发生冲突时,浏览器可依据层叠顺序处理,样式指网页中文字大小、颜色、元素间距、排列等格式。

    9.2 节点树及节点间关系

    DOM文档对象模型,它定义了访问HTML和XML的标准。

    HTML DOM将HTML文档视为树结构:

    节点有层级关系,父节点、子节点、兄弟节点,节点树中顶端节点称为根,每个节点都有父节点,同时可以拥有任意数量子节点或者兄弟节点。

    9.3  css选择器,用来定位节点,可嵌套选择。

    展开全文
  • 网页分析总结

    2021-06-04 15:24:55
    本次是分析动态网站所写,看起来是MVC的。是JSP,带框架的。...动态一般通过请求获取,静态则直接 随页面一起 发送本地。 本次使用浏览器的抓工具时用搜索搜索不到本静态页面内容,要格外注意。 ...
    1. 本次是分析动态网站所写,看起来是MVC的。是JSP,带框架的。
    2. 先分析静态,再分析动态。
    3. 动态一般通过请求获取,静态则直接 随页面一起 发送本地。

    你所要找的数据要么在属性里藏着,要么在静态页面内容直接显示,要么就是在当前的输入里。

    1. 当然我不建议你这么做,这种方法过于简单粗暴,如果页面逻辑复杂一些数据多一些可能要吃大苦头。更当然,我们尽量选择简单快速的方式,如果你的经验足够的话。
    2. 建议注入的javascript代码选择指定相关框架执行,如果有的话,本次测试的效果比在根页面注入执行效果好点。
    3. 选择抓包跟踪时获得的链接可能并不可靠,比如本次加了个端口号,而在浏览器分析工具与fiddier软件中都未曾显示。
    4. 遇到了总是清除不掉cookie和文件而清除数据重新打开又显示要安装控件的问题,试了网上多种方法都不行,本次解决方法为新开一个进程。
    展开全文
  • ![浏览器中请求](https://img-ask.csdn.net/upload/201705/08/1494223696_42278.png) 其实就是想快速的抓评论,如果用selenium + phantomjs ...如果能自动拿到这些信息或者链接的话,就可以分析了,有什么方法吗??
  • 理解网页请求过程

    千次阅读 2016-12-26 16:04:11
    第一步,解析域名,找到主机IP (1)浏览器会缓存DNS一段时间,一般2-30分钟不等。如果有缓存,直接返回IP,否则下一步。 (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件。如果找到,直接返回IP...
    

    在浏览器输入:http://www.baidu.com/,最后,浏览器呈现出相应网页,这个过程究竟发生了什么?


    第一步,解析域名,找到主机IP
    (1)浏览器会缓存DNS一段时间,一般2-30分钟不等。如果有缓存,直接返回IP,否则下一步。
    (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件。如果找到,直接返回IP,否则下一步。(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts科学上网或破解软件。)
    (3)进行了(1)(2)本地查询无果,只能借助于网络。路由器一般都会有自己的DNS缓存,ISP服务商DNS缓存,这时一般都能够得到相应的IP。如果还是无果,只能借助于DNS递归解析了。
    (4)这时,ISP的DNS服务器就会开始从根域名服务器开始递归搜索,从.com顶级域名服务器,到baidu的域名服务器。

    到这里,浏览器就获得了IP。在DNS解析过程中,常常会解析出不同的IP。比如,电信的是一个IP,网通的是另一个IP。这是采取了智能DNS的结果,降低运营商间访问延时,在多个运营商设置主机房,就近访问主机。电信用户返回电信主机IP,网通用户返回网通主机IP。当然,劫持DNS,也可以屏蔽掉一部分网点的访问,某防火长城也加入了这一特性。


    第二部,浏览器与网站建立TCP连接

    浏览器利用IP直接与网站主机通信。浏览器发出TCP(SYN标志位为1)连接请求,主机返回TCP(SYN,ACK标志位均为1)应答报文,浏览器收到应答报文发现ACK标志位为1,表示连接请求确认。浏览器返回TCP()确认报文,主机收到确认报文,三次握手,TCP链接建立完成。


    第三部分,浏览器发起GET请求

    浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是http://www.baidu.com/ ,还有User-Agent用户浏览器操作系统信息,编码等。值得一提的是Accep-Encoding和Cookies项。Accept-Encoding一般采用gzip,压缩之后传输html文件。Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。


    第四部分,显示页面或返回其他
    返回状态码200 OK,表示服务器可以相应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

    但是,对于大型网站存在多个主机站点,往往不会直接返回请求页面,而是重定向。返回的状态码就不是200 OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。


    补充一点的就是,重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。


    二、转自http://www.cnblogs.com/orchid/archive/2012/04/21/2461442.html

    我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西,它可能是百度之类的搜索页面,或是一个挤满了文字和图片的门户网站。从我们打开浏览器,到我们看到我们想看的内容,这过程究竟发生了什么?

    下面我们就从三个方面理解这个过程,一个是浏览器,二个是服务器,第三个是浏览器和服务器之间通信的协议。在理解这三方面之前我们必须先搞明白将这三方面联系起来的一个词:web。 

    1,world wide web 

    我们通常所说的web就是指world wide web。一般来讲,这一种通过浏览器来访问资源的技术。我们经常说的上网,应该大部都是指的是上万维网(web),但是我们经常将万维网和因特网(Internet)搞混。因特网是一种网络互连的技术,它更指的是物理层面上的互连,而万维网应该算是跑在因特网上的一种服务。

    我们通常通过浏览器还访问web,我们常见到的网页中包含超文本,图片,视频音频等各项内容。向我们提供这些资源的是一个一个的站点,通过互联网,这些站点相互连接起来。我们通过超链接从一个网页访问到另外一个网页,从一个站点到另外一个站点,所有的这一切组成一个庞大的网,这就是web。

    支持web的技术,首先是底层的网络,因为web就是建立在Internet之上,web的基本协议是HTTP协议,它跑在TCP上的协议之上,而TCP协议又需要IP协议的支持,IP协议又要由底层链路来支撑,所以我们可以从高到第看到这样一个协议栈 http->tcp->ip->连路层协议。要理解web到ip就已经足够了。

    我们可以想一想web上的资源有哪些? 首先是文本,后来添加了图片,到现在的各种音频视频资源,所有互联网上的资源都要通过一个叫做URI的东西还标记,当然了我们更常见是URL。现在也不必纠结于两者有何不同,URL就是URI的一个子集,URL给了我们资源的地址,所以我们能够找到它。

    现在看一个URL:https://www.google.com.hk/images/nav_logo107.png 这是一个图片的url。它是按照这样的语法来定义:scheme://domain:port/path?query_string#fragment_id.scheme就是协议,在浏览器里通常是http,例子中的是https是一种由HTTP和SSL/TLS组合起来的应用,用以提供加密通信和对网络服务器的身份验证(http://zh.wikipedia.org/zh/HTTPS )。然后就是域名,每个站点都至少有一个域名,上面例子上的域名部分是www.google.com.hk,这个域名也是分为三部分的,www是主机名,com.hk算是顶级域名,除了com还有cn,net等。域名后面是端口号默认为80,通常被省略,这是服务器端服务器软件侦听的端口,也是TCP里面一个端口号的值。然后就是path,资源在服务器上的路径。最后问号部分的客户端利用url传给服务器的一些参数值,通常值比较少,不太重要时这么做。

    2,协议

    (1)HTTP协议

    web里最重要的协议就是HTTP协议,对于经典的ISO七层网络模型来说, HTTP处于最高层--应用层。HTTP应用的模型是client/server模型。因此对应着两种HTTP消息类型,request和response。客户端向服务器发出请求,服务器向客户端发回请求。下面看一下两种类型消息的格式:


     

     

    下面分别进行解释。

    首先是HTTP Request Message

     请求行:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。请求方法常见的有:GET POST HEAD PUT等。

    消息报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。 POST请求的内容放在实体正文中。 

     HTTP Response Message

     状态行:最主要的一个字段是服务器响应代码。比如,200 OK ,400 Bad Request ,401 Unauthorized ,403 Forbidden ,404 Not Found ,500 Internal Server Error ,503 Server Unavailable

    消息报头:普通报头和实体报头与 请求报头的类似。有区别的在于响应包头,响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

     (这部分说的比较粗略,网上的资源比较多,可以参考这一篇:http://blog.csdn.net/gueter/article/details/1524447 和http://book.51cto.com/art/200902/109036.htm )

     下面是ethereal抓到的一个get报文,post报文和响应报文,可以大概看一下。

     

     

     

    (2)TCP协议

    HTTP协议基于TCP协议,也就是HTTP的所有内容将作为TCP的实体被封装到TCP报文里面。TCP协议是面向连接,可靠的传输机制。也就是说客户端在与服务器交互数据的过程中会有一个连接建立和释放的过程,看上面的Http头部字段可以看到相关的字段。TCP有强大的窗口机制能够适应发送方和接收方的发送接收能力,也能根据整个网络状况进行调整。

    (3)IP协议

     IP协议处于整个TCP/IP协议族的承上启下地位。我们知道因特网上主机是靠一个32位的ip地址来定位的,HTTP用的URL也算是地址,但是比较高级,IP协议是理解不了的,所以需要一个从URL到IP的转换,这个过程通过DNS(域名查询系统)协议完成。我们用的每一台电脑上都配置了DNS服务器的地址,如果没有配置那么你的网关默认充当了,当我们有一个URL想知道对应的IP时就需要向DNS服务器发送查询请求了,它会把查询的结果发回。

    2,浏览器

     在web的世界里最不能少的角色就是浏览器。前面我们说到HTTP协议,HTTP消息有两种,request和response。浏览器的主要工作就是发送http request报文和接收处理http response报文。没有看过浏览器的开源文档,但是我觉得一个软件只要完成下面几件事,基本上就可以称的上一个浏览器了。

    (1)能够根据用户的请求生成合适的HTTP REQUEST报文。比如用户在浏览器地址栏上输入地址进行访问,浏览器要能够生成HTTP GET报文,表单的发送生成POST报文等等。

    (2) 能够对各种的RESPONSE进行处理。

    (3)渲染Html文档,生成文档树,能够解释css,还要有个javascript引擎。

    (4)能够发起dns查询得到ip地址。

    浏览器是个非常复杂的软件,当然现在的浏览器对http协议的支持应该不是问题,它们主要纠结于html文档渲染部分,对于用户层出不穷的新需求,w3c层出不穷的新标准,浏览器的路应该才刚刚开始。 

    3, 服务器

    服务器有两个层级的概念,它可以是机器,它上面存着一个站点的所有东西,也可以是软件,安装在一个也叫做服务器的机器上,帮助这个机器分发用户想要的东西。 我对服务器研究不多,只是用过几次apache。所以只是简单的谈谈我的认识。

    服务器最基本的功能就是响应客户端的资源请求。服务器首先会侦听80端口,来了http请求,就根据请求进行处理,请求一个图片那就根据路径找到资源发回,请求静态html页面也是如此,如果请求的是像php这样的动态页面应该先调用php编译器(或是解释器吧)生成html代码,然后返回给客户端。当然还要解决的一个问题就是并行问题以应对大访问量。

    因为对这方面不太了解,只想到了这么多。

     

    先说到这里, 有了新的认识再写。



    三、转自http://blog.csdn.net/saiwaifeike/article/details/8789624

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。
    本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~
    1. 首先嘛,你得在浏览器里输入要网址:


    2. 浏览器查找域名的IP地址

    导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:
    * 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
    * 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
    * 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
    * ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
    * 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会 有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。
    DNS递归查找如下图所示:
    500pxAn_example_of_theoretical_DNS_recursion_svg.png

    2012-11-24 19:53:01 上传下载附件 (21.65 KB)


    DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:
    * 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
    * 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。
    * 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
    * Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。
    大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。
    3. 浏览器给web服务器发送一个HTTP请求

    因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。
    所以,浏览器将把一下请求发送到Facebook所在的服务器:
    GET HTTP://facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: facebook.com
    Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]
    GET 这个请求定义了要读取的URL: “HTTP://facebook.com/”。 浏览器自身定义 (User-Agent 头), 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。
    请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。
    用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优 化时会帮上很大忙。
    除了获取请求,还有一种是发送请求,它常在提交表单用到。发送请求通过URL传递其参数(e.g.: HTTP://robozzle.com/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。
    像“HTTP://facebook.com/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“HTTP: //example.com/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加 斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。
    4. facebook服务的永久重定向响应

    图中所示为Facebook服务器发回给浏览器的响应:
    HTTP/1.1 301 Moved Permanently
    Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
    pre-check=0
    Expires: Sat, 01 Jan 2000 00:00:00 GMT
    Location: HTTP://www.facebook.com/
    P3P: CP=”DSP LAW”
    Pragma: no-cache
    Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
    path=/; domain=.facebook.com; httponly
    Content-Type: text/html; charset=utf-8
    X-Cnection: close
    Date: Fri, 12 Feb 2010 05:09:51 GMT
    Content-Length: 0
    服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“HTTP://www.facebook.com/” 而非“HTTP://facebook.com/”。
    为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。
    其中一个原因跟搜索引擎排名有 关。你看,如果一个页面有两个地址,就像HTTP://www.igoro.com/ 和HTTP://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。
    还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。
    5. 浏览器跟踪重定向地址

    现在,浏览器知道了 “HTTP://www.facebook.com/”才是要访问的正确地址,所以它会发送另一个获取请求:
    GET HTTP://www.facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    Accept-Language: en-US
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
    Host: www.facebook.com
    头信息以之前请求中的意义相同。
    6. 服务器“处理”请求


    服务器接收到获取请求,然后处理并返回一个响应。
    这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!
    * Web 服务器软件web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就 是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY…)。
    举 个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。像HTTP://example.com/folder1/page1.aspx这个地 址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理,这样 page1.aspx的发布地址就可以是HTTP://example.com/folder1/page1。* 请求处理请求处理阅读 请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。
    所 有动态网站都面临一个有意思的难点 -如何存储数据。小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。解决方案有:sharding (基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。
    委托工作给批处理是一个廉价保持数据更新的技术。举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者猜测是这样的,改功能如何完善不得而知)。批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。7. 服务器发回一个HTML响应


    图中为服务器生成并返回的响应:
    HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-check=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP=”DSP LAW”Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT
    2b3Tn@[...]
    整个响应大小为35kB,其中大部分在整理后以blob类型传输。
    内容编码头告诉浏览器整个响应体用 gzip算法进行压缩。解压blob块后,你可以看到如下期望的HTML:
    “HTTP://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>lang=”en” id=”facebook”>

    关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么cookies要去设置(前面这个响应里没有这点)和隐私信息等 等。
    请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下 载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。8. 浏览器开始显示HTML
    在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了:


    9. 浏览器发送获取嵌入在HTML中的对象


    在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。
    下面是几个我们访问facebook.com时需要重获取的几个URL:
    * 图片
    HTTP://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
    HTTP://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
    …* CSS 式样表
    HTTP://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
    HTTP://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
    …* JavaScript 文件
    HTTP://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
    HTTP://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js

    这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等…
    但不像动态页面那样,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限信息,所以浏览器知道要把它们缓存多长时间。还有,每个响应都可能包含像版本号一样工作的ETag头(被请求变量的实体值),如果浏览器观察到文件的版本 ETag信息已经存在,就马上停止这个文件的传输。
    试着猜猜看“fbcdn.net”在地址中代表什么?聪明的答案是”Facebook内容分发网络”。Facebook利用内容分发网络 (CDN)分发像图片,CSS表和 JavaScript文件这些静态文件。所以,这些文件会在全球很多CDN的数据中心中留下备份。
    静态内容往往代表站点的带宽大小,也能通过CDN轻松的复制。通常网站会使用第三方的CDN。例如,Facebook的静态文件由最大的 CDN提供商Akamai来托管。
    举例来讲,当你试着ping static.ak.fbcdn.net的时候,可能会从某个akamai.net服务器上获得响应。有意思的是,当你同样再ping一次的时候,响应的 服务器可能就不一样,这说明幕后的负载平衡开始起作用了。10. 浏览器发送异步(AJAX)请求


    在Web 2.0伟大精神的指引下,页面显示完成后客户端仍与服务器端保持着联系。
    以 Facebook聊天功能为例,它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态,在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。还是在Facebook这个例子中,客户端发送给HTTP://www.facebook.com/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息。
    提起这个模式,就必须要讲讲”AJAX”– “异步JavaScript 和 XML”,虽然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧,对于异步请求,Facebook会返回一些 JavaScript的代码片段。
    除了其他,fiddler这个工具能够让你看到浏览器发送的异步请求。事实上,你不仅可以被动的做为这些请求的看客,还能主动出击修改和重 新发送它们。AJAX请求这么容易被蒙,可着实让那些计分的在线游戏开发者们郁闷的了。(当然,可别那样骗人家~)
    Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所 以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。
    这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息,它就不理这个客户端。而当尚未超时的情况下收到了 该客户的新消息,服务器就会找到未完成的请求,把新消息做为响应返回给客户端。总结一下


    展开全文
  • 找到待爬取的链接,然后发送一个请求包,得到一个返回包,所以核心的几个要素就是: URL 请求方法(POST, GET) 请求包headers 请求包内容 返回包headers 在用Chrome进行网络请求捕获或者用抓包工具分析请求时,...
  • 浏览器发送http请求过程分析

    千次阅读 2019-05-21 11:14:52
    请求过程整体流程: 1.域名解析--> 2.发起TCP的3次握手-->...5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)--> 6.浏览器对页面进行渲染呈现给用户. 下面以Chrome浏览器访问www...
  • 目录 一、浏览器控制台抓 1.打开方式以及常用选项 2.控制台NetWrok 二、Python爬虫中如何通过post发请求...2.post请求分析 3.js方法转python方法 4.程序设计 一、浏览器控制台抓 在很多的工作中都是需要...
  • java抓取网页数据获取网页中所有的链接实例分享,使用方法,只要实例化HtmlParser时传入网页地址就可以了
  • 一个网页是如何通过http请求实现的

    千次阅读 2019-09-15 00:14:37
    前言 当我们在网址上输入完我们要访问的网站的域名的时,浏览器是具体怎么工作... 浏览器接收请求并进行网页渲染,让用户看到自己想要的结果. 那么,接下我们来看一看具体的是怎么做的. 一、找到链接所对应的网站(DNS...
  • Chrome内核凭借各种好用碾压各个浏览器,就连微软都逃不过,现在已经是一家独大...Elements面板:主要介绍如何实时修改网页中的内容和样式,保存网页中任何禁止保存的图片、文字。还可以模拟手机版网页。 Console面板
  • fiddler之header、web网页、修改

    千次阅读 2020-04-11 20:12:42
    查看Header: 选中一个HTTP请求--->单击Inspectors tab--->request tab--->Headers Cache相关的Header: HTTP请求和HTTP响应中有很多用于缓存的Header HTTP缓存是指当Web请求抵达缓存时,...
  • 爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现。我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路。怎么突破的,遇到...
  • 一、HTTP协议基础 ... 1.协议特点: ...简单快速,请求方式get post head等8中请求方式 ...无连接(一次请求就断开)无状态(没有记忆功能,不会记录任何信息) ...二、HTTP的请求包 ...1.请求包格式:requ...
  • 控制台抓和requests.post()发送请求

    千次阅读 2019-09-05 08:48:00
    控制台抓 打开方式及常用选项 1、打开浏览器,F12打开控制台,找到Network选项卡 2、控制台常用选项 ...2、Sources: 格式化输出并打断点调试JavaScript代码,助于分析爬虫中一些参数 3、Console:...
  • 本文将首先向您展示在开发Fetch API之前如何使用原始JavaScript发出请求。然后,我们将指导您如何使用Fetch API,重点介绍与其他方法相比有何改进。 建立 本文着眼于使用Fetch API在浏览器中发出HTTP请求。因此,...
  • (本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你...简单快速,请求方式get post head等8中请求方式 无连接(一次请求就断开)无状态(没有记忆功能,不会记录任何信息) 2.支持的模式:B/S、C/S...
  • 爬虫进阶知识>解析网站中的JavaScript

    千次阅读 2019-11-07 19:35:32
    js解析 引言 在了解如何调试js之前, 需要简单了解一下http的请求过程 1.DNS域名解析; 2.建立TCP连接; 3.发送HTTP请求; 4.服务器处理请求; 5.返回响应结果; 6.关闭TCP连接; 7.浏览器解析HTML; 8.浏览器布局...
  • 在前几天学习 Python 模拟登录知乎实例,其中关于涉及到了 fromdata 的加密处理,再学习的过程中,发现利用 chrome devtool调试分析网页还是有很多技巧需要学习,因此自己找了一个简单的实例用来学习 js 加密。...
  • HTTP报文格式及WireShark抓包分析

    千次阅读 2019-01-19 16:40:22
    在这个请求格式之中空行是必不可少的一行。空行之后是请求实体。一个具体的HTTP请求报文格式如下: GET /su?wd=www.&action=opensearch&ie=UTF-8 HTTP/1.1 Host: suggestion.baidu.com ...
  • 昨天有小伙伴找我,新浪新闻的国内新闻页,其他部分都是静态网页可以抓到...今天我们的目标是上图红框部分,首先我们确定这部分内容不在网页源代码中,属于js加载的部分,点击翻页后也没有json数据传输! 需要Pytho...
  • 一、JS原生Ajax Ajax=异步Javascript+XML; ajax是一种数据请求的方式,不需要刷新整个页面。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 ajax的核心技术当然是XMLHttpRequest对象; ...
  • Python抓解析json爬虫 在使用Python爬虫的时候,通过抓url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时,点击F12:right_arrow:...
  • 一次网页请求背后的连接

    千次阅读 2016-12-07 10:55:39
    网页请求中浏览器使用的并行连接、持久连接以及TCP连接建立关闭的过程均有所分析讨论,对HTTP如何封装在TCP中进行数据请求以及数据的响应返回也有所展示。供学习交流之用。 TCP简介本文从传输层的报文开始,下层...
  • 针对 android端模拟教务系统登陆,主要针对抓过程,post,get请求,和解析网页和cookie(一)2016年8月31日00:03:40 本人android新手,就读于安阳师范学院,最近在做教务系统登陆的案例,也是在拜读了网上很多做...
  • 响应: 响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response ...网页请求常见响应码: 状态码 说明 详情 100 继续 请求者应当继续提出请求。服务器已经接收到
  • JavaScript异步请求

    2020-08-18 14:36:10
    AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。 有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图等等 ②Ajax...
  • http抓包分析技巧总结

    千次阅读 2017-07-10 22:34:59
    包分析必须先要准备好抓工具(详细可以参考抓工具使用详情)和多种常用浏览器   1.快速定位到html标签 不要用IE浏览器,ie没有这个方法。具体就是在浏览器定位到你要分析的内容,然后鼠标点击右键,一般都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,924
精华内容 36,769
关键字:

网页如何解析js请求包