selenium(五)伪造浏览器
简介:
这个就比较好玩了,大家还记得以前的QQ小尾巴么?还有百度贴吧的小尾巴,就是那个来自***的iphone7,这个功能。
这个功能是基于浏览器的user-agent功能实现的。
还是httpbin.org

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
服务器能够识别你的操作系统,浏览器,就可以针对性的给你返回适合你的设备。通俗讲,就是手机可以浏览手机版的页面,电脑可以浏览电脑版的页面。以前还有什么手机版,触屏版……
浏览器现在都有插件来实现更换UA了。selenium,我们也要更换啊。尤其是那个请在微信中打开……,那是在微信中内置了一个浏览器,有它自己的UA,服务器知道你用的是微信内置浏览器,就给你访问,如果不是,就提示你请在微信中打开。
我去找一个微信UA
Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A403 MicroMessenger/6.3.27 NetType/WIFI Language/zh_CN
据说这样的UA,就可以打开了,你可以用浏览器插件更换后试一试。我就不给你看我的UA了。有人说只要UA中包含(MicroMessenger)就可以。我也不测试了。
目标:使用selenium,来替换UA。
一:selenium 查看现在的UA。
from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
driver.get('http://httpbin.org/user-agent')

二:firefox替换UA
from selenium import webdriver
ua='Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) \
AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A403 \
MicroMessenger/6.3.27 NetType/WIFI Language/zh_CN'
profiel = webdriver.FirefoxProfile()
profiel.set_preference('general.useragent.override',ua)
driver=webdriver.Firefox(firefox_profile=profiel)
driver.get('http://httpbin.org/user-agent')
好了,这就替换了
三:chrome替换UA
from selenium import webdriver
ua='Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) \
AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A403 \
MicroMessenger/6.3.27 NetType/WIFI Language/zh_CN'
options=webdriver.ChromeOptions()
options.add_argument('user-agent=' + ua)
driver=webdriver.Chrome(options=options)
driver.get('http://httpbin.org/user-agent')
好了,这就替换了
四:深入思考
firefox可以通过webdriver -> FirefoxProfile -> set_preference (名称 ,值) 来替换设置浏览器的参数
chrome 可以通过 webdriver -> ChromeOptions -> add_argument (名称=值)来替换设置浏览器的参数
那么都有哪些参数可以设置呢?
firefox下:可以打开 about:config 来查看可以设置的选项
Chrome :可以设置的启动参数列表 https://peter.sh/experiments/chromium-command-line-switches/
我现在就用这么多,更多的配置参数,自己查吧。
selenium(五)伪造浏览器的更多相关文章
- 爬虫(五)—— selenium模块启动浏览器自动化测试
目录 selenium模块 一.selenium介绍 二.环境搭建 三.使用selenium模块 1.使用chrome并设置为无GUI模式 2.使用chrome有GUI模式 3.查找元素 4.获取标签 ...
- Python selenium + Firefox启动浏览器
Python selenium 的运用 from selenium import webdriver # from selenium.webdriver.firefox.firefox_profile ...
- Python+selenium自动化测试之浏览器基础操作
**前言** 本文主要讲解webdriber框架,Selenium 就像真实用户所做的一样,Selenium 测试可以在 Windows.Linux 和 Macintosh上的 Internet ...
- (原创)如何使用selenium 驱动chrome浏览器并且打开方式为手机模式-转载请注明出处
随着移动设备使用率的不断增加,移动页面的测试也变得越来越重要. 对于互联网公司M站的测试,如果不通过专用的appium等移动端测试工具是否还有方便快捷的办法呢?答案当然是有啊. 使用chrome dr ...
- selenium + python 多浏览器测试
selenium + python 多浏览器测试 支持库包 在学习 Python + Selenium 正篇之前,先来看下对多浏览器模拟的支持.目前selenium包中已包含webdriver,hel ...
- Selenium IDE- 不同的浏览器
Selenium IDE- 不同的浏览器 Selenium IDE脚本只能对火狐的工具Firefox插件运行测试.使用Selenium-IDE开发的测试可以对其他浏览器所保存为Selenium网络驱动 ...
- selenium 启动ie 浏览器
selenium 启动ie 浏览器 var driver = new InternetExplorerDriver(@"IEDriverServer.exe路径"); driver ...
- Selenium Grid跨浏览器-兼容性测试
Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...
- selenium+谷歌无头浏览器爬取网易新闻国内板块
网页分析 首先来看下要爬取的网站的页面 查看网页源代码:你会发现它是由js动态加载显示的 所以采用selenium+谷歌无头浏览器来爬取它 1 加载网站,并拖动到底,发现其还有个加载更多 2 模拟点击 ...
- selenium与chrome浏览器及驱动的版本匹配
用selenium+python+webdriver完成UI功能自动化,经常会碰到浏览器版本与驱动的版本不匹配而引起报错,下面就selenium与chrome浏览器及驱动的版本匹配 做个总结. 使用W ...
随机推荐
- cogs 330. [NOI2003] 文本编辑器
★★★ 输入文件:editor2003.in 输出文件:editor2003.out 简单对比 时间限制:2 s 内存限制:128 MB [问题描述] 很久很久以前,DOS3.x的程序 ...
- luogu P2073 送花 线段树
思路&心路 一眼认定沙比提 写的比较慢,写了1小时吧 开心的交上去 卧槽,只有20? 不服不服,拿着题解的代码去对拍 Emma,<100没问题 100000数据错了,还只是错了一个数据 ...
- ActiveMQ 集群配置 高可用
自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Pure Master Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数 ...
- sqlserver数据库出错的解决方法
1.SQLServer2008数据库sa账户登录127.0.0.1失败 http://blog.sina.com.cn/s/blog_546a30270102weh2.html 2.SqlServer ...
- Unity3D学习笔记(十):Physics类和射线
物理系统:碰撞器.触发器等 力:有大小有方向的矢量,有受力点位置(和向量的区别) ----F = ma(m质量,a加速度,质量越大,加速度越小,停下来越慢) ----m1v1 = m2v2(冲量守恒定 ...
- Apache Kylin大数据分析平台的演进
转:http://mt.sohu.com/20160628/n456602429.shtml 我是来自Kyligence的李扬,是上海Kyligence的联合创始人兼CTO.今天我主要来和大家分享一下 ...
- makefile 中的符号替换($@、$^、$<、$?)
Makefile $@, $^, $< $@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件$? 表示比目标还要新的依赖文件列表 如一个目录下有如下文件: $ ls ...
- vijos1904 学姐的幸运数字
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- hdu 1005 矩阵快速幂
#include<iostream> #include<cstdio> #include<cmath> #include<string> #includ ...
- Springboot 编码规范
1.规范的意义和作用 编码规范可以最大限度的提高团队开发的合作效率 编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 编码规范可以 ...