一、问题

爬虫在获取页面数据时可能会遇到许多页面异步加载、js加密、动态Cookie等问题,我们在做爬虫开发的时候经常用到浏览器的开发者工具,分析网页元素,查看资源加载(Network)等。Selenium + Webdriver 虽然能够定位DOM元素、操作页面、获取网页等。但是 Selenium 终归只能处理“结果”,它无法得知浏览器请求的数据接口信息。如果我们能像浏览器Network那样获取到所有接口的请求和返回信息,那么问题不都解决了。

现在我们可以使用selenium + Browsermob-Proxy通过proxy访问网络,再收集proxy端的请求和返回内容,从而获取到数据。

二、Browsermob-Proxy

1.Browsermob-Proxy是一个开源的Java编写的基于LittleProxy的代理服务。Browsermob-Proxy的具体流程有点类似与Flidder或Charles。即开启一个端口并作为一个标准代理存在,当HTTP客户端(浏览器等)设置了这个代理,则可以抓取所有的请求细节并获取返回内容。

2.插件的安装,直接到项目的github上下载打好的压缩包即可:https://github.com/lightbody/browsermob-proxy/releases ,支持Linux和Windows。

安装对应的python包(ptp install browsermob-proxy),下载好Browsermob-Proxy后将它放在指定的目录,如我是放在:D:\软件\browsermob-proxy-2.1.4这个路径下。

三、插件在代码的引用与使用示例

1.引用

2.启动代理

3.配置Proxy启动WebDriver

4.模拟人工登录跳过淘宝滑块验证

5.通过链接去获取指定页面下的加密参数,因为可能有些页面没有你想要的加密参数,所以这里要指定存在加密参数的链接

6.这样可以获取你想要的url链接的所有响应,在响应中解析出我们获取数据的加密参数以及cookie,运行结果如图:

最后将获取到的加密参数与cookie传入到请求参数中。

四、总结:

在数据采集过程中,在遇到一些加密参数不知道如何获取时,但通过页面请求头可以找到这些参数,这时候就可以使用这种方法来获取加密参数,如果你js很厉害有些加密参数可以知道如何逆向解析出来,那就不需要这种方法了。

Python selenium Browsermob-Proxy获取网页加密请求参数的方法及过程相关推荐

  1. Python爬虫基础-如何获取网页源代码

    Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler),又称网页蜘蛛(Web Spider),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫程序根据一组特定的规则 ...

  2. python+selenium实现自动刷新网页

    Selenium是一个用于Web应用程序测试的工具,本文介绍利用python+selenium实现自动刷新网页. 一.安装 selenium pip install selenium 二.下载并导入浏 ...

  3. pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法

    在python中使用requests 模拟浏览器发送请求数据的方法 如下所示: import requests url='http://####' proxy={'http':'http://#### ...

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. nodejs获取get/post请求参数

    一.原生node中怎么获取get/post请求参数 处理get请求参数,使用node自带的核心模块----url模块 url.parse();方法将一个完整的URL地址,分为很多部分,常用的有:hos ...

  6. 使用jquery获取url及url参数的方法

    [开发笔记]-使用jquery获取url及url参数的方法 使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: windo ...

  7. Selenium+Browsermob-Proxy 爬虫-获取浏览器Network请求和响应(新示例)

    之前有写过一篇文章,使用Selenium+Browsermob-Proxy 获取浏览器Network请求和响应(地址:https://blog.csdn.net/qq_32502511/article ...

  8. python selenium 保存网页_使用python / selenium保存完整的网页(包括CSS,图像) - python...

    我正在使用Python / Selenium将遗传序列提交到在线数据库,并希望保存返回的完整页面.以下是使我获得所需结果的代码: from selenium import webdriver URL ...

  9. python使用requests+BeautifulSoup获取网页元素的内容

    1.导入第三方库request和beautifulsoup4 2.之后 import requests from bs4 import BeautifulSoup 3.使用requests中的get/ ...

最新文章

  1. 为啥我的页面模板的from提交不了数据_小程序,组件与模板对比,及其简单使用
  2. linux 设置代理 安装jdk mysql tomcat redis hadoop
  3. CTFshow 命令执行 web50
  4. php奇数乘法表,PHP九九乘法表
  5. before和after怎么区分_如何区分before和after~有时候觉得两者可以通用
  6. 你的灯亮着吗?阅读笔记之一
  7. 牛客网_PAT乙级_1026跟奥巴马一起编程(15)
  8. 配置ip yum 单用户 救援 运行级别
  9. 零基础入门深度学习(7) - 递归神经网络
  10. 分子机制研究的五个层次,你的研究在哪个层次--转载
  11. Css 分类 属性 选择器
  12. vsftp不同帐号的目录和权限
  13. Ubuntu12.04 apt-get 安装mysql
  14. App自动化测试前期准备---android SDK配置
  15. 2_C语言中的数据类型 (一)2.1.常量和字符串常量
  16. 【android自定义控件】TextView详解及自定义一
  17. Springboot整合junit单元测试
  18. 【Oracle】数据清洗案例
  19. 9 tlds tomcat_解决Tomcat 7日志At least one JAR was scanned for TLDs...问题
  20. IDEA 黄色警告 found duplicated code in this file finds duplicated code

热门文章

  1. 【认知分享】为什么马云能成功而你不能
  2. STM32时钟树分析
  3. Exception while loading planner ‘ompl_interface/OMPLPlanner‘: According to the loaded plugin descrip
  4. php获取商品订单号,php根据订单号 跟踪物流
  5. EF从数据库更新模型时保留Model上的属性设定
  6. NVIDIA 驱动下载网址
  7. XMC系列正交编码器的测量
  8. 介绍下AT32的XMC异步通信的几个模式的时序(MODE1/2/A/B/C/D)
  9. 基于VLC实现RTSP推流视频
  10. 专业MES执行系统软件开发商,精诚MES系统的优势