zoukankan      html  css  js  c++  java
  • Python实战:如何隐藏自己的爬虫身份

    使用爬虫访问网站,需要尽可能的隐藏自己的身份,以防被服务器屏蔽,在工作工程中,我们有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)
    运行结果:

    不停的攻击百度网






  • 相关阅读:
    poj 3528 (三维几何求凸包+凸包表面积)
    dijkstra模板(好像是斐波那契额堆优化,但我为什么看起来像优先队列优化,和spfa一样)
    最大空凸包模板
    ICPC 2017–2018, NEERC, Northern Subregional Contest St Petersburg, November 4, 2017 I题
    hdu 5248 序列变换
    hdu 2063(二分图模板测试)
    组合数
    85. Maximal Rectangle 由1拼出的最大矩形
    750. Number Of Corner Rectangles四周是点的矩形个数
    801. Minimum Swaps To Make Sequences Increasing 为使两个数组严格递增,所需要的最小交换次数
  • 原文地址:https://www.cnblogs.com/jpfss/p/9591520.html
Copyright © 2011-2022 走看看