写好爬虫的原则只有一条:

就是让你的抓取行为和用户访问网站的真实行为尽量一致

1、伪造UA字符串,每次请求都使用随机生成的UA

为了减少复杂度,随机生成UA的功能通过第三方模块库fake-useragent实现,使用pip进行安装

1
pip install fake-useragent

2、生成一个UA字符串只需要如下代码

1
2
from fake_useragent import UserAgent
 ua = UserAgent()

各浏览器的User-Agent

这个库还有一个其他的功能,就是可以随机各浏览器的UA

IE浏览器的UA:

1
print(ua.ie)

Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)

Opera浏览器的UA:

1
print(ua.opera)

Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00

Chrome浏览器的UA:

1
print(ua.chrome)

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2

Firefox浏览器的UA:

1
print(ua.firefox)

Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1

Safari浏览器的UA:

1
print(ua.safari)

Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

随机User-Agent

写爬虫最实用的就是可以随意变换headers,一定要有随机性

在这里我写了三个随机生成UA,三次打印都不一样,随机性很强,十分方便

1
2
3
print(ua.random)
print(ua.random)
print(ua.random)

Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/37.0.2062.124 Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36

当然,你如果不想这么用的话,你也可以自己搜集一些UA,存为文本文件,然后打开读取来用

附:常用的User-Agent列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
USER_AGENTS = [
 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
 "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
 "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
 "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
 "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
 "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
 "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
 "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
 "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]

伪造随机的User-Agent的更多相关文章

  1. 关于随机浏览头伪装fake-UserAgent

    使用: from fake_useragent import UserAgent ua = UserAgent() #ie浏览器的user agent print(ua.ie) Mozilla/5.0 ...

  2. [WEB安全]伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP

    0x01 简介 一个用于伪造ip地址进行爆破的BurpSuite插件,burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景. 0x02 功能 伪造指定ip 伪造本地ip 伪造随机ip 随 ...

  3. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  4. Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器

    这是 Java 爬虫系列博文的第四篇,在上一篇 Java 爬虫遇上数据异步加载,试试这两种办法! 中,我们从内置浏览器内核和反向解析法两个角度简单的聊了聊关于处理数据异步加载问题.在这篇文章中,我们简 ...

  5. 使用Dhcpstarv解决DHCP服务器冲突问题

    场景: 内网环境需要开启多个DHCP服务器,分别给不同的设备进行PXE安装. 存在的问题: 多个DHCP的情况下,设备在启动时随机从一个DHCP服务器获取IP(哪个DHCP服务器先响应就从哪个获取)并 ...

  6. 如何让你的scrapy爬虫不再被ban

    前面用scrapy编写爬虫抓取了自己博客的内容并保存成json格式的数据(scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据)和写入数据库(scrapy爬虫成长日记之将抓取内容写入 ...

  7. .CN根域名被攻击至瘫痪,谁之过?【转】

    2013年8月25日凌晨,.CN域名凌晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析.事故造成大量以.cn和.com.cn结尾的域名无法访问.直到当日凌晨4点 ...

  8. .CN根域名被攻击至瘫痪,谁之过?

    2013-10-08 09:19 佚名 新浪科技 2013年8月25日凌晨,.CN域名凌晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析.事故造成大量以.cn和 ...

  9. scrapy-middlewares

    1.scrapy中间件 下载中间件Downloader Middlewares 下载器中间件处理请求与响应,对应两个方法 process_request(self, request, spider) ...

随机推荐

  1. ShoneSharp语言(S#)的设计和使用介绍系列(5)— 数值Double

    ShoneSharp语言(S#)的设计和使用介绍 系列(5)— 数值Double 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSh ...

  2. idea打印中文乱码

    一.问题情况: IntelliJ IDEA 控制台输出中文乱码部分如图所示: 二.解决方法: 1.打开tomcat配置页面,Edit Configurations. 2.选择项目部署的tomcat,在 ...

  3. Mysql的一次查询的过程

    1.用户发起请求,这里往往时多线程并发访问 2.去数据库线程池拿数据库链接,如果没有线程池,每次访问都要和数据库建立一次连接,非常耗时,效率低下 3.数据库层面上来说,可能会有多个系统同时访问它,所以 ...

  4. ngnix随笔三

    1.location模块 在server中也可以嵌套location 例 server{ listen 80; server_name www.a.com; root   /data/vhosts/; ...

  5. [ES6系列-03]ES6中关于参数相关特性详解(参数默认值与参数解构赋值与剩余参数)

    [原创] 码路工人 大家好,这里是码路工人有力量,我是码路工人,你们是力量. 今天总结一下 ES6 中跟参数相关的内容. 欢迎补充斧正.留言交流. 让我们互相学习一起进步. 1. ES6 参数默认值( ...

  6. 画出决策边界线--plot_2d_separator.py源代码【来自python机器学习基础教程】

    import numpy as np import matplotlib.pyplot as plt from .plot_helpers import cm2, cm3, discrete_scat ...

  7. 低功耗SRAM主要三部分功耗来源

    随着SOC 技术的迅猛发展,由电池供电的便携式电子产品得到了广泛应用,如智能手机.运动手环.ipad.部分汽车电子等.近年来半导体工艺已进入深亚微米甚至纳米阶段,工艺尺寸不断缩小,但是由于电池技术的缓 ...

  8. zabbix通过IPMI监控服务器传感器参数

    一.需求:机房dell服务器和IBM服务器皆有主板管理接口iDRAC和iMM,上周已为服务器管理接口配置了ip地址,考虑通过zabbix实现对服务器传感器参数的实时监控.使用DELL-DL1300服务 ...

  9. 和付费网盘说再见,跟着本文自己起个网盘(Java 开源项目)

    本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 网盘项目. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列. 今天给大家带 ...

  10. Mysql查询语句,select,inner/left/right join on,group by.....[例题及答案]

    创建如下表格,命名为stu_info, course_i, score_table. 题目: 有如图所示的三张表结构,学生信息表(stu_info),课程信息表(course_i),分数信息表(sco ...