浏览器工作原理:从URL输入到页面加载的完整流程

需积分: 0 0 下载量 39 浏览量 更新于2024-08-05 收藏 1.52MB PDF 举报
"04-导航流程:从输入URL到页面展示,这中间发生了什么?_For_vip_user_0011" 在这个话题中,我们将深入探讨从用户在浏览器中输入URL到页面最终显示的完整过程。这个流程涉及到网络、操作系统和Web技术等多个领域的知识。以下是对这个过程的详细解释: 首先,用户在浏览器的地址栏输入URL或搜索关键词。这时,浏览器首先会检查输入是否为书签或历史记录中的条目。如果是,它将直接跳转到相应的页面。如果不是,则进入下一阶段。 2.URL请求过程: 一旦用户按下回车键,浏览器开始解析输入的URL。解析包括验证URL的格式,解析协议(如HTTP或HTTPS)、主机名、路径和其他组成部分。浏览器根据解析得到的协议决定是否使用代理服务器,并构建一个HTTP或HTTPS请求。 3.网络进程: 网络进程负责处理实际的网络通信。它创建一个TCP连接(对于HTTP/1.x)或建立TLS连接(对于HTTPS),并向服务器发送HTTP请求。请求头包含了诸如Host、User-Agent等信息,以及请求方法(GET、POST等)。对于HTTPS,数据会被加密以保证传输安全。 4.服务器响应: 服务器接收到请求后,处理并返回响应,包括状态码(如200表示成功,404表示未找到),响应头,以及页面内容。如果服务器需要身份验证,可能会返回401状态码并要求客户端提供凭证。 5.准备渲染进程: 当浏览器接收到服务器的响应后,它需要创建或选择一个合适的渲染进程来显示页面。渲染进程是独立于浏览器进程的,每个Tab通常对应一个渲染进程,以实现进程隔离,减少因一个页面崩溃而影响其他页面的风险。 6.提交文档阶段: 浏览器进程将接收到的HTML文档提交给渲染进程,同时也会传递其他如CSS、JavaScript、图片等资源的URL。这个阶段称为提交文档。 7.渲染进程: 渲染进程接收文档后,开始解析HTML,构建DOM树。接着,CSS样式表被下载并解析,与DOM树结合形成CSSOM树。同时,JavaScript代码也可能开始执行,可能修改DOM或CSSOM,影响页面布局。 8.页面渲染: 当CSSOM树和DOM树合并成渲染树后,渲染进程计算每个元素的布局,然后进行绘制。这个过程称为布局和绘画,结果被存储在GPU内存中,用于屏幕显示。页面的动态更新,如脚本执行、网络资源加载,都会触发重排和重绘。 9.加载子资源: 在页面解析过程中,浏览器还会异步加载图片、字体等子资源。这些资源的加载可能触发额外的网络请求,并在加载完成后被插入到页面中。 10.页面交互: 页面完全加载后,用户可以开始与页面交互,如点击按钮、滚动等。这些交互会被传递给渲染进程,然后由渲染进程处理事件并更新页面。 总结,从输入URL到页面展示,这是一个涉及多个步骤和进程协作的过程,包括用户交互、网络请求、数据解析、页面渲染和用户交互。理解这一流程有助于我们更好地理解网页的工作原理,同时也对排查和优化网站性能至关重要。
2023-06-03 上传

import requests import os from bs4 import BeautifulSoup cookie = os.getenv('MY_COOKIE') # 保存到环境变量中 def get_with_cookie(url): headers = { 'cookie': cookie, 'pragma': 'no-cache', 'referer': 'https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=%E7%88%B1%E6%B7%98%E5%AE%9D%E4%B9%B0%E4%B8%9C%E8%A5%BF&clk1=066356e5e429004e6730976351cc1afc&upsId=066356e5e429004e6730976351cc1afc', 'sec-ch-ua': '"Microsoft Edge";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': "Windows", 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'same-origin', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50' } resp = requests.get(url=url, headers=headers) return resp.text # 解析HTML内容,提取商品名称、价格和销量信息 def parse_html(html): soup = BeautifulSoup(html, 'html.parser') title = soup.select_one('h3.tb-main-title[data-title]') return title # 测试接口: url = 'https://item.taobao.com/item.htm?id=699089474285&ali_refid=a3_430673_1006:1102522391:N:%2BAkz14GC%2BXi%2Bma9dw7y9M4p5Yhq5iT8I:f9e826228fbc823934848d20e28dff81&ali_trackid=162_f9e826228fbc823934848d20e28dff81&spm=a2e0b.20350158.31919782.5' resp_text = get_with_cookie(url) title = parse_html(resp_text) # 打印商品信息 print(title.text.strip())使用try-except语句捕获异常

2023-05-25 上传