爬虫02-代理IP和伪造用户代理

1,104 阅读1分钟

在爬取数据的过程中,我们会经常遇到一些反爬机制,常见的反爬机制有:

1、封杀爬虫程序

2、封杀指定IP

3、封杀非人操作的程序

4、验证码等

在不同的浏览器发送请求的时候,会有不同的User-Agent头,服务器通过查看User-Agent来判断谁在访问

上一节我们用urllib来获取网页数据,urllib中默认的User-Agent中会有python的字样,服务器可以通过检查UA将我们拒之门外

下面我们通过伪造UA来访问网站



  • from
    urllib
    import
    request



  • url =
    'http://www.csdn.net/'




  • headers = {
    'User-Agent'
    :
    'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 '




  • '(KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
    }



  • # 创建request对象




  • req = request.Request(url, headers=headers)



  • req.add_header(
    'Connection'
    ,
    'keep-alive'
    )



  • response = request.urlopen(req)



  • html = response.read().decode()



  • print(html)


有时我们爬取某个网站时,我们的IP会被封掉,为了防止我们的IP被封就需要用代理IP了



  • from
    urllib
    import
    request



  • url =
    'http://www.baidu.com/'




  • proxy = {
    'http'
    :
    '120.24.152.123:3128'
    }



  • proxy_support = request.ProxyHandler(proxy)



  • opener = request.build_opener(proxy_support)



  • opener.addheaders=[(
    'User-Agent'
    ,
    'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 '




  • '(KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19)'
    )]



  • request.install_opener(opener)



  • response = request.urlopen(url)



  • html = response.read().decode()



  • print(html)



一个爬虫去访问某个网站一分钟可以访问几十次,而一个人正常的访问某个网站一分钟可能就访问几次,为了爬虫程序被服务器识别出来,我们需要动态的设置UA和IP,或者在爬取页面时设置延时,这样能延长爬虫的存活时间

更多免费技术资料可关注:annalin1203