mozilla

客户端检测

瘦欲@ 提交于 2019-11-29 20:05:05
1、能力检测 基本概念 定义:最常用也最为人们广泛接受的客户端检测形式是能力检测(又称特性检测) 目标:不是识别特定的浏览器,而是识别浏览器的能力,,基本模式如下: if (object.propertyInQuestion){ //使用 object.propertyInQuestion } 举例: function getElement(id){ if (document.getElementById){ return document.getElementById(id); } else if (document.all){ return document.all[id]; } else { throw new Error("No way to retrieve element!"); } } 要理解能力检测,首先必须理解两个重要的概念: 先检测达成目的的最常用的特性 必须测试实际要用到的特性 function getWindowWidth(){ if (document.all){ //假设是 IE return document.documentElement.clientWidth; //错误的用法!!! } else { return window.innerWidth; } } 更可靠的能力检测 错误的能力检测: //不要这样做!这不是能力检测—

浏览器的用户代理字符串

本小妞迷上赌 提交于 2019-11-29 20:04:26
每个浏览器都有它自己的用户代理(user agent)字符串,里面包含了浏览器和操作系统等信息。通过使用这个字符串,我们可以处理跨浏览器的差异。用户代理字符串保存在 JavaScript 的 navigator.userAgent 变量中。我们先来看看各个主流浏览器在各个平台的用户代理字符串的例子。 1. IE 和 IE Mobile 浏览器 系统平台 浏览器 用户代理字符串 Windows IE 9 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Windows IE 10 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) Windows IE 11 Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko Windows Phone IE 10 Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) 2. Firefox 和 Firefox Mobile 浏览器

根据User Agent参数的各个字段Mozilla/5.0/4.0-AppleWebKit/Chrome/Safari/Firefox/Opera/MSIE来确定/判断客户端使用什么浏览器

孤者浪人 提交于 2019-11-29 20:03:50
下面给你一一解答以及给你介绍: //Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1 –safari RFC1945要求User Agent包含产品名称和版本,注释似乎是可选的。 1. 很多浏览器的UA以Mozilla/5.0开头,这在之前用来说明和Mozilla渲染引擎的兼容性(我们兼容Mozilla5.0哦~你只要按照这个来做就行了哦亲~~) 2. like Gecko是平台说明,Gecko是Firefox和很多浏览器用的排版引擎。 3. Chrome的渲染引擎是WebKit,和Safari浏览器的差不多。所以似乎就是,网站不能识别Chrome的话,没问题,你按照Safari来做也没事。 首先HTTP规范要求浏览器应该发送User Agent; 其次Netcape公司的浏览器Netscape Navigator 2就开始采用“Mozilla/Version [Language] (Platform; Encryption)”这种形式的字符串; 当微软进入浏览器市场的时候,Netscape的浏览器占据了绝对的市场份额,而当时的服务器又会专门去检测这个浏览器,所以微软为了不让自家浏览器打不开网页

BOM之navigator对象和用户代理检测

帅比萌擦擦* 提交于 2019-11-29 20:03:38
前面的话   navigator对象现在已经成为识别客户端浏览器的事实标准,navigator对象是所有支持javascript的浏览器所共有的。本文将详细介绍navigator对象和用户代理检测 属性   与其他BOM对象的情况一样,每个浏览器中的navigator对象也都有一套自己的属性。下表列出了存在于所有浏览器中的属性和方法,以及支持它们的浏览器版本 属性 说明 appCodeName 浏览器名称[所有浏览器都返回Mozilla] userAgent 浏览器的用户代理字符串 appVersion 浏览器版本 appMinorVersion 次版本信息[IE返回0,chrome和firefox不支持] platform 浏览器所在的系统平台[所有浏览器都返回Win32] plugins 浏览器中安装的插件信息的数组 mimeTypes 在浏览器中注册的MIME类型数组 language 浏览器主语言[IE10-不支持,其他浏览器返回zh-CN] systemLanguage 操作系统语言[IE返回zh-CN,chrome和firefox不支持] userLanguage 操作系统默认语言[IE返回zh-CN,chrome和firefox不支持] product 产品名称[IE10-不支持,其他浏览器返回Gecko] productSub 产品次要信息[IE不支持

05.scrapy框架的UA池和代理池

左心房为你撑大大i 提交于 2019-11-29 17:56:01
一:下载中间件  scrapy框架图 下载中间件(Downloader Middlewares)位于scrapy引擎和下载器之间的一层   作用:   1.引擎将请求传递给下载器过程中,下载中间件可以对请求进行一系列处理.比如设置请求的User-Agent,设置代理等   2.在下载器完成将response传递给引擎中,下载中间件可以对响应进行一系列处理,比如进行gzip解压等. -我们主要使用下载中间件处理请求,一般会对请求设置随机User-Agent,设置随机的代理,目的在于防止爬取网站的反爬策略. -二:UA池: User-Agent池   -作用:尽可能多的将scrapy工程中的请求伪装成不同类型的浏览器身份   -操作流程:     1.在下载中间件中拦截请求     2.将拦截到的请求的请求头信息中的UA进行篡改伪装     3.在配置文件中开启下载中间件 代码展示 #导包 from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware import random #UA池代码的编写(单独给UA池封装一个下载中间件的一个类) class RandomUserAgent(UserAgentMiddleware): def process_request(self, request,

浏览器内核的解析和对比

对着背影说爱祢 提交于 2019-11-29 17:17:32
要搞清楚浏览器内核是什么,首先应该先搞清楚浏览器的 构成。简单来说浏览器可以分为两部分,shell+内核。其中shell的种类相对比较多,内核则比较少。Shell是指浏览器的外壳:例如菜单,工具栏 等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。内核才是浏览器的核心。内核是基于标记语言显示内容的程序或模块。也有一些 浏览器并不区分外壳和内核。从Mozilla将Gecko独立出来后,才有了外壳和内核的明确划分。目前主流的浏览器有IE6、 IE8 、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。 什么是浏览器内核 浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至 显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内 容的应用程序都需要内核。(参见维基百科)JS引擎则是解析Javascript语言,执行javascript语言来实现网页的动态效果。最开始渲染引 擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎

Python之文件操作

给你一囗甜甜゛ 提交于 2019-11-29 16:42:30
一、文件操作步骤 1、有个文件 2、打开文件 3、操作文件:读、写 4、关闭文件 f=open('users.txt','a+') #打开文件 f.flush() #写入文件后,立即从内存中把数据写到磁盘中 f.seek(0) #指针从头开始 print(f.read()) #读取内容 f.write('hhh,1234\n') #写入内容 print(f.read()) f.close() #关闭文件 #结果: #123,abc #456,def #123,abc #456,def #hhh,1234 打开文件格式: f=open('a.txt','r') # 文件名 模式 二、文件模式 r ----------只读模式:打开文件不存在的话,会报错;使用.write()方法时报错。 w----------只写模式:打开文件不存在的话,会自动新建文件;会清空原来文件的内容;使用.read()方法时报错。 a-----------追加写模式:打开文件不存在的话,会自动新建文件;使用.read()方法时报错。 3种模式的增强模式: r+----------读写模式:打开文件不存在的话,会报错;使用.write()方法时不报错。 w+---------写读模式:打开文件不存在的话,会自动新建文件;会清空原来文件的内容;使用.read()方法时不报错。 a+----------追加写读模式

Does Content Security Policy block bookmarklets?

本秂侑毒 提交于 2019-11-29 16:40:50
问题 Does Mozillas CSP block to execute Javascript from a bookmark by default? Can it be configured to do so? 回答1: As of 2017, the answer is still a definitive "maybe" - just like when this answer was originally posted in 2011. The specification clearly says: Policy enforced on a resource SHOULD NOT interfere with the operation of user-agent features like addons, extensions, or bookmarklets. And this is indeed the behavior I see in Chrome 61: a bookmarklet will run on https://addons.mozilla.org/,

urllib库爬取实例

大憨熊 提交于 2019-11-29 15:07:08
from urllib import request import random def spider(url): user_agent_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" ] user_agent = random.choice(user_agent_list) print

怎么用Python写爬虫抓取网页数据

半腔热情 提交于 2019-11-29 13:06:44
机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取。本篇介绍怎么写一个爬虫从网上抓取公开的数据。 很多语言都可以写爬虫,但是不同语言的难易程度不同,Python作为一种解释型的胶水语言,上手简单、入门容易,标准库齐全,还有丰富的各种开源库,语言本身提供了很多提高开发效率的语法糖,开发效率高,总之“ 人生苦短,快用Python ”(Life is short, you need Python!)。在Web网站开发,科学计算,数据挖掘/分析,人工智能等很多领域广泛使用。 开发环境配置,Python3.5.2,Scrapy1.2.1,使用pip安装scrapy,命令:pip3 install Scrapy,此命令在Mac下会自动安装Scrapy的依赖包,安装过程中如果出现网络超时,多试几次。 创建工程 首先创建一个 Scrapy 工程,工程名为: kiwi ,命令: scrapy startproject kiwi ,将创建一些文件夹和文件模板。 定义数据结构 settings.py是一些设置信息,items.py用来保存解析出来的数据,在此文件里定义一些数据结构,示例代码: 1 # -*- coding: utf-8 -*- 2 3 # Define here the models for your