应对反爬之前先懂什么是网站反爬

2023-05-04 16:32:08 浏览数 (2)

爬虫的出现是大数据时代的必然产物,是各行各业数据分析必不可少的存在。爬虫就像一个虫子密密麻麻地爬行到每一个角落获取数据,虫子或许无害,但总是不受欢迎的。

因为爬虫技术造成的大量IP访问网站侵占带宽资源、以及用户隐私和知识产权等危害,很多互联网企业都会花大力气进行“反爬虫”。比如你的爬虫会遭遇被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载、post请求参数动态变化、禁止页面调试等都有可能出现这些都是常见的反爬方式。但是上有政策下有对策,爬虫也有相对应的反爬虫措施,比如通过使用大量优质爬虫代理ip来解决ip被限制问题,通过登陆破解各种验证码,添加随机userAgent突破访问限制等等。

应对反爬虫措施的主要思路就是尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现,比如请求头User-agent,这是个很常见的,不做过多阐述,如下,这是我访问某某网站的,然后图上标注的就是user-agent,在这里的User-Agent可以使用多个随机的,意思就是假如你请求20次,你可以自己构造多个不同的User-Agent随机使用一次不重样的,防止过于频繁,这也是常见的方式,具体使用如下:

代码语言:javascript复制
import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'}

res = requests.get(url='https://www.baidu.com/', headers=headers)

再比如通过限制ip的操作,如果目标网站限制了ip的访问频率,这时就需要使用代理ip去不停的更换,ip的选择也需要看业务网站对ip的要求是否高,像一些大型电商类的网站,不仅对ip质量要求严,对ip池的需求也大,这种情况一般需要通过购物代理服务才能满足,代理商有大量高质量的ip池,如果自己搭建那成本会很大。代理商的选择也很多,比如口碑出在爬虫行业里很出圈的亿牛云代理等。代理ip的具体使用如下:

代码语言:javascript复制
    #! -*- encoding:utf-8 -*-

    import requests
    import random

    # 要访问的目标页面
    targetUrl = "http://httpbin.org/ip"

    # 要访问的目标HTTPS页面
    # targetUrl = "https://httpbin.org/ip"

    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"

    # 代理验证信息
    proxyUser = "username"
    proxyPass = "password"

    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }

    # 设置 http和https访问都是用HTTP代理
    proxies = {
        "http"  : proxyMeta,
        "https" : proxyMeta,
    }


    #  设置IP切换头
    tunnel = random.randint(1,10000)
    headers = {"Proxy-Tunnel": str(tunnel)}



    resp = requests.get(targetUrl, proxies=proxies, headers=headers)

    print resp.status_code
    print resp.text

0 人点赞