Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)

一、 什么是代理?

Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第1张图片

二、 代理服务器的作用

可以进行请求的响应和转发

三、 在爬虫中为何要使用代理

如果我们使用爬虫对一个网站在一段时间内发起一个高频请求,该网站会检测出这个异常的现象,并将异常的请求 IP 获取,将 IP 加入到黑名单,然后改 IP 在近期就无法再次对该网站进行访问。

四、 代理的匿名度

匿名度 是否知道使用代理 是否知道真实IP
透明
匿名
高匿

五、 代理的类型

类型 功能
http 只能转发http协议的请求
https 只能转发https协议的请求

一般的代理服务器两种类型均支持

六、 如何使用代理

1. 购(bai)买(piao)IP

条条大路通罗马,自己的 IP 被封了不能用,就得买别人的 IP
Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第2张图片

当然也是可以白嫖的,点击下方图片进入网站,注册登录之后,可以每天白嫖10个1-5分钟的ip,如果需要更多,就只能自己买了,看起来很便宜的样子。

Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第3张图片

Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第4张图片

2. 提取 IP

大概这么配置一下,即可生成一个 API 接口,需要 IP 的时候调用一下就可以了,具体怎么选择,看个人需求。

Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第5张图片

def get_proxies():
    url_ip_port = """API"""  #  此处填写获取的API
    ip_port_json = requests.get(url_ip_port).json()
    print('已获取新ip_port:{ip_port},到期时间:{ExpireTime}'.format(ip_port=ip_port_json['data'][0]['IP'],
                                                           ExpireTime=ip_port_json['data'][0]['ExpireTime']))
    proxies = {
        "https": 'http://{}'.format(ip_port_json['data'][0]['IP']),
    }
    return proxies

使用 IP

搜狗主页代码里可以获取到本机 IP 地址
Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)_第6张图片
语法:
在请求中添加一个为 proxies 的参数
值为:{“https”: ‘http://【ip:port】’,}

if __name__ == '__main__':
    User_Agent_list = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763',
        'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4292.2 Safari/537.36']
    headers = {'User_Agent': random.choice(User_Agent_list)}
    # 本机访问
    sogou_index = requests.get(url='https://www.sogou.com/', headers=headers,).text
    tree = etree.HTML(sogou_index)
    print(tree.xpath('/html/head/script[1]//text()'))
    # 代理服务器访问
    sogou_index = requests.get(url='https://www.sogou.com/', headers=headers, proxies=get_proxies()).text
    tree = etree.HTML(sogou_index)
    print(tree.xpath('/html/head/script[1]//text()'))

在这里插入图片描述

进阶操作

用 Redis 搭一个 IP 池,需要时从 Redis 里随机取一个出来,定时自动删除,简直不要太舒服。

你可能感兴趣的:(python爬虫,python,爬虫,动态代理)