1 通过Python调用浏览器解析页面,处理动态数据加载(AJAX、JavaScript)
selenium 可以执行浏览器的平台,并且可以执行浏览器的各种动作事件
PhantomJS 就是一个无界面headless的浏览器
Chrome 有界面的浏览器
Selenium + PhantomJS
Selenium + Chrome
导入webdriver
from selenium import webdriver
#创建浏览器对象
driver = webdriver.PhantomJS() # 无界面的 PhantomJS
driver = webdriver.Chrome() # 默认有界面的 chrome
发送浏览器的网页请求
driver.get(“http://www.baidu.com/”)
获取网页渲染后的源码
html = driver.page_source
1 发送请求(如何模拟浏览器的请求,发送给网站服务器,获取响应 urllib2 requests)
2 提取数据(从响应里提取数据re lxml bs4 jsonpath,可能会涉及js加密 js2py selenium+PhantomJS)
3 保存数据(json、csv、mongodb,数据去重)
4 提高并发量(多线程、协程)
5 反爬处理(请求报头、代理IP、访问频率、验证码)
2.通过抓包工具抓取网页数据包,也可以抓取移动端H5、APP里数据
Fiddler、Charles 本地代理服务器 127.0.0.1:8888
数据加密:
网页通过JavaScript,可以通过分析js代码进行破解;
移动端app通过客户端软件代码(java、oc、swift),可以通过反汇编逆向工程进行处理
Fiddler 是Windows平台
Fiddler设置
电脑浏览器抓包:
- 点开Options菜单,点击HTTPS,允许电脑抓取HTTPS通信包,并安装Fiddler信任证书
- 点开Options菜单,点击Connections,设置 允许远程计算机链接
- 重新启动Fiddler
- 打开浏览器,使用SwitchOmega 设置代理为 127.0.0.1:8888 即可访问HTTPs页面抓包
手机抓包:
- 手机和电脑必须在同一个网段下(表示可以通过同一个路由器链接)
- 手机设置 WiFi的代理为 电脑的IP代理,端口号 8888
- 访问 http://电脑的ip:8888 下载手机的证书
Charles设置:
电脑浏览器抓包:
- 安装后,替换安装目录下的 lib 下的 charles.jar 用于破解。
- 点开Proxy菜单,选择Proxy settings… 打开HTTP抓包,默认8888端口
- 点开Proxy菜单,选择SSL Proxing settings… 打开 https抓包,添加监听 .
- 点开Help菜单,选择SSL Proxying,安装Charles信任证书
- 打开浏览器,代理设置为 127.0.0.1:8888 即可访问HTTPs页面抓包
手机抓包:
- 手机和电脑必须在同一个网段下(表示可以通过同一个路由器链接)
- 手机设置 WiFi的代理为 电脑的IP代理,端口号 8888
- 手机浏览器访问:http://www.charlesproxy.com/getssl 安装证书即可。
Wireshark:
移动端抓包:
- 手机和电脑 必须在同一个网段下(WiFi)
- 电脑共享热点,让手机连接
- 在电脑上安装(Android、iOS模拟器)来实现数据抓包
网易MuMu、夜神、雷电
移动端配置:
第一步,安装Fiddler证书,访问PC端ip:8888 下载安装证书
第二步,通过WLAN 修改手机端的 WiFi 代理为 pc端 ip:8888
- 验证码处理,Tesseract OCR、打码平台
打码平台:
http://www.ruokuai.com/client/index?698490
http://www.yundama.com/
http://jiyan.c2567.com/docs/default.html
https://www.aliyun.com/ss/?k=验证码