总结5 (http协议与chorme抓包,cookie,ajax加载爬取)

本文深入解析HTTP请求中的GET与POST区别,请求头参数如User-Agent、Referer和Cookies的使用,及响应状态码含义,帮助理解HTTP协议的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

get 请求:从服务器获取数据,并不会对服务器资源产生影响的,使用get请求(一般情况)

post请求:向服务器发送数据(登录),上传文件等。会对服务器的资源产生影响的。

 

请求头常见参数
在nttp协议中,向服务器发送一个请求,数据分为三部分,第一个是把数据放在ur中,第二个是把数据放在body中(在post请求中),第三个就是把数据放在head中。这里介绍在网络各爬虫中经常会用到的一些请求头参数:1.user- Agent:浏览器名称。这个在网络肥虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的uer- Agent就是 Python,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此我们经常设置这个值力一些浏览器的值,来伪装我们的肥虫2. Referer:表明当前这个请求是从哪个url过来的,这个一般也可以用来做反爬虫技木。如果不是从指定西面过来的,那么就不做相关的响应。
3cookies:"http协议是无状态的,也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这时候就用 cookies来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送 cookies信息了。

 

 

常见响应状态码:
1. 200:请求正常,服务器正常的返回数据。
2. 301:永久重定向。

3.  302:临时重定向。比加在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。

4. 400:请求的ur1在服务器上找不到。换句话说就是请求url错误。

5. 403:服务器拒绝访问,权限不够。
6 . 500:服务器内部错误。可能是服务器出现bug了\

 

什么是 cookie:
在网站中http请求是无状态的。也就是说即使第一次和服务端连接后并且置录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie的出现就是为了解决这个问题,第一次置录后服务器返回一些数据( cookie)给浏览器,然后测览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的 cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。 cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用 cookie只能存储一些小量的数据。

cookie的格式:  Set-Cookie: NAME=VALUE: Expires/Max-age=DATE: PathaPATH: Domain=DOMAIN NAME: SECURE。详细解释看下面

cookie参数意义
NAME:cokie的名字
VALUE: cookie的值。
Expires:coke的过期时间。有过期时间的。
Path: cookie作用的路径。
Domain: cookie作用的域名。SECURE:是否只在http协议下起作用,cookies是会限制那个域名使用的。

 

http.cookiejar模块
该模块主要的类有 CookieJar,FileCookieJar, MozillacookieJar,LwPCookieJar,这四个类的作用分别如下:

1.CookieJar管理Http cookie值、存储http请求生成的cookie,向传出的http请求添加oke的对像,整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失

2. FileCoakieJar(filename,delaylosd-None),从cookiejar派生而来,用来创建cookieJar实例,检索cookie信息并从
将cookie存储到文件中,filename是存储的文件名,delayload为True时支持延迟访防问文件,只有在需要时才读取文件或在文件中存储数据。
3. MozillaCookieJar (filename. delayload=None, policy=None):从 File CookieJar派生而来,创建与Mozilla浏览器cookies. txt兼容的File CookieJar实例。
4. LWPCookieJar(filename. delayload= None, policy=None):从 File CookieJan派生而来,创建与 ibwwwperl标准的 Set- Cookie3文件格式兼容的 File CookieJar实例。
 

 

 

 

 

 

<think>好的,用户的问题是如何在Chrome中模拟登录并自动处理Cookie弹窗,使用的工具包括Selenium和Puppeteer。我需要根据提供的引用内容来整理解决方案。 首先,用户提到了Selenium和Puppeteer,所以需要分别给出这两种工具的解决方法。引用[1]中的代码展示了如何通过Puppeteer启动Chrome并暴露调试端口,然后Selenium连接这个实例。这可能对同时使用两个工具有帮助,但用户可能需要分开的解决方案。 对于Selenium部分,用户需要处理Cookie弹窗。通常,这涉及到等待弹窗出现,然后找到同意按钮并点击。引用[3]提到Selenium可能会被检测到,但用户可能已经决定使用它,所以需要处理这个问题。此外,可能需要配置Chrome选项来禁用某些检测,比如excludeSwitches中的enable-automation。 对于Puppeteer部分,引用[2]提到了如何指定浏览器路径,这可能在此问题中不需要,但需要注意。Puppeteer的API可以处理页面元素,比如等待选择器出现并点击。引用[1]中的Puppeteer启动代码可以用来启动浏览器,处理登录和Cookie弹窗。 另外,引用[4]提到了Playwright,虽然用户没提,但可能作为替代方案。不过用户的问题集中在Selenium和Puppeteer,所以可能不需要深入讨论。 接下来,需要整合这些信息,分步骤给出两种工具的解决方案。对于Selenium,需要处理可能的检测问题,使用选项如excludeSwitches和add_experimental_option来规避。然后导航到登录页面,填写表单,提交,等待Cookie弹窗并点击同意。 对于Puppeteer,启动浏览器后,导航到页面,处理登录表单,然后处理弹窗。需要注意等待元素出现,避免异步加载的问题。 可能还需要提到Cookie的管理,比如保存和加载,但用户的问题主要是处理弹窗,所以可能不需要详细展开,但可以简要提及。 需要确保代码示例正确,语法正确,并且引用相关的引用内容。例如,在Selenium中使用debuggerAddress连接可能需要引用[1],而处理反爬的措施引用[3]。 最后,生成相关问题,可能涉及其他工具如Playwright,或者如何处理更复杂的弹窗,性能比较等。</think>在Chrome中实现自动化登录和处理Cookie弹窗,可通过以下两种主流方案实现: ### 一、使用Selenium方案 ```python from selenium.webdriver import Chrome, ChromeOptions options = ChromeOptions() # 规避自动化检测 options.add_experimental_option("excludeSwitches", ["enable-automation"]) # [^3] options.add_experimental_option("useAutomationExtension", False) driver = Chrome(options=options) driver.get("https://example.com/login") # 模拟登录 driver.find_element("id", "username").send_keys("your_username") driver.find_element("id", "password").send_keys("your_password") driver.find_element("id", "submit-btn").click() # 处理Cookie弹窗(需等待元素加载) from selenium.webdriver.support.ui import WebDriverWait WebDriverWait(driver, 10).until(lambda d: d.find_element("id", "cookie-accept")) driver.find_element("id", "cookie-accept").click() ``` ### 二、使用Puppeteer方案 ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); // 模拟登录 await page.goto('https://example.com/login'); await page.type('#username', 'your_username'); await page.type('#password', 'your_password'); await page.click('#submit-btn'); // 处理Cookie弹窗(显式等待元素) await page.waitForSelector('#cookie-accept', { visible: true }); await page.click('#cookie-accept'); await browser.close(); })(); ``` ### 关键要点对比 | 特性 | Selenium | Puppeteer | |--------------------|----------------------------------|----------------------------| | 反爬风险 | 需规避`navigator.webdriver`[^3] | 无指纹特征 | | 执行效率 | 较慢 | 直接控制Chrome更快 | | 部署复杂度 | 需安装浏览器驱动 | 自动下载Chromium[^2] | | 多语言支持 | Python/Java/C#等 | Node.js为主 | ### 高级技巧 1. **Cookie持久化**:通过`driver.get_cookies()`(Selenium)或`page.cookies()`(Puppeteer)保存会话 2. **弹窗智能等待**:推荐使用显式等待策略(如`WebDriverWait`),避免隐式等待导致的性能损耗 3. **无头模式支持**:两者均可设置`headless: true`实现后台运行
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值