使用爬虫访问网站,需要尽可能的隐藏自己的身份,以防被服务器屏蔽,在工作工程中,我们有2种方式来实现这一目的,分别是延时访问和动态代理,接下来我们会对这两种方式进行讲解

1、延时访问

见名之意,延时访问就是在访问网站时设置一个访问周期,每隔几秒钟访问一次,这样的方式更像是人为访问网站


  1. import time
  2. import urllib.request
  3. cnt = 0
  4. #隐藏自己爬虫的身份的第一种策略是设置访问周期,使得程序更像是人为访问的
  5. while True: #每隔5秒钟访问一次百度网
  6. url = "https://www.baidu.com" #设置url地址
  7. param = {} #设置参数,参数是字典
  8. param = urllib.parse.urlencode(param).encode('utf_8') #将参数以utf-8编码方式来编码
  9. req = urllib.request.Request(url, param)
  10. #设置header的User-Agent属性,模拟该请求是由狐火浏览器发送的,也就是说欺骗服务器是人为发送的并未程序发送的
  11. req.add_header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0")
  12. response = urllib.request.urlopen(req) #访问网络
  13. html = response.read() #读取响应的结果
  14. result = html.decode("utf-8") #按照utf-8编码来进行解码
  15. if result != "":
  16. cnt += 1
  17. print("第%s次攻击百度网" %cnt)
  18. time.sleep(5) #程序睡眠5秒钟

运行结果:

每隔5秒钟访问一次百度网

2、动态代理

使用代理服务器来访问网站,这种方法非常霸道,可以模拟出不同的服务器访问网站,也是最为推荐的一种方式,我们可以在百度网上查找免费的代理服务器IP


  1. import urllib.request
  2. import random
  3. ipList = ['119.6.144.73:81', '183.203.208.166:8118', '111.1.32.28:81'] #定义多个代理IP,代理IP可以在网上搜免费的
  4. cnt = 0
  5. #隐藏自己爬虫的身份的第二种策略是使用代理,意思是模拟多个服务器访问
  6. while True: #使用代理服务器不停的访问百度网
  7. proxy_support = urllib.request.ProxyHandler({'http':random.choice(ipList)}) #定义一个代理对象,使用随机的ip
  8. opener = urllib.request.build_opener(proxy_support)
  9. opener.add_handlers = [("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0")]
  10. urllib.request.install_opener(opener)
  11. response = urllib.request.urlopen("https://www.baidu.com") #访问网络
  12. html = response.read() #读取响应的结果
  13. result = html.decode("utf-8") #按照utf-8编码来进行解码
  14. if result != "":
  15. cnt += 1
  16. print("第%s次攻击百度网" %cnt)

运行结果:

不停的攻击百度网

Python实战:如何隐藏自己的爬虫身份的更多相关文章

  1. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  2. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  3. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  4. 再一波Python实战项目列表

    前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...

  5. (转)Python新手写出漂亮的爬虫代码2——从json获取信息

    https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...

  6. Python实战之自己主动化评论

    Python实战之自己主动化评论 玩csdn博客一个多月了,渐渐发现了一些有意思的事,常常会有人用相同的评论到处刷.不知道是为了加没什么用的积分,还是纯粹为了表达楼主好人.那么问题来了,这种无聊的事情 ...

  7. python scrapy版 极客学院爬虫V2

    python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...

  8. zeromq 学习和python实战

    参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html   原理解读 zeromq只是一层针对socke ...

  9. 【python】一个简单的贪婪爬虫

    这个爬虫的作用是,对于一个给定的url,查找页面里面所有的url连接并依次贪婪爬取 主要需要注意的地方: 1.lxml.html.iterlinks()  可以实现对页面所有url的查找 2.获取页面 ...

随机推荐

  1. Windows Route 路由表命令整理

    Windows Route 路由表命令 在本地 IP 路由表中显示和修改条目. 语法 route [-f] [-p] [Command [Destination] [mask Netmask] [Ga ...

  2. 洛谷 P1691 有重复元素的排列问题

    P1691 有重复元素的排列问题 题目描述 设R={r1,r2,……,rn}是要进行排列的n个元素.其中元素r1,r2,……,rn可能相同.使设计一个算法,列出R的所有不同排列. 给定n以及待排列的n ...

  3. 洛谷 P1097 统计数字

    P1097 统计数字 题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自 ...

  4. [D3] Add hovercard

    The way to add hovercard is Append a div with class 'hovercard' in the tick function, positioning th ...

  5. [Web Security] JSON Hijacking

    After reading the blog, the main take away from there is: "Never send back JOSN array to the cl ...

  6. ubuntu下安装phpredis的模块扩展

    1.前提是先安装好redis,然后再安装phpredis. .. 2.先下载phpredis-master.tar.gz安装包... 详细详情例如以下: <span style="co ...

  7. 每天自动备份MySQL数据库的shell脚本

    经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的.一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行.我们需要一种安全的,每天自动备份的方法 ...

  8. [Angular] New async 'as' syntax and ngIf.. else

    From Anuglar v4 above, we are able to using 'as' with async pipe. This allow as using 'new variable' ...

  9. keil出现一些库函数没有定义

  10. Springboot+shiro配置笔记+错误小结(转)

    软件152 尹以操 springboot不像springmvc,它没有xml配置文件,那该如何配置shiro呢,其实也不难,用java代码+注解来解决这个问题.仅以此篇记录我对shiro的学习,如有对 ...