zoukankan      html  css  js  c++  java
  • 基于requests模块的代理

    1.什么是代理?

    ​ 代理:将网络请求发送给代理服务器,通过代理服务器做中介,将请求转发给目标服务器并将响应返回,从而完成网络通信。

    2.为什么使用代理?

    ​ 使用爬虫抓取批量资源时,在短时间内会对服务器发起高频请求,服务器会判定这些高频请求不是“普通访客”发起的,从而拒绝该IP的发起的请求,但是我们可以更换IP(使用代理IP)继续进行访问

    3.代理的基础知识
    • ​ 代理的类型:http和https 根据要访问网页使用的协议类型进行选择
    • ​ 匿名度:分为透明、匿名和高匿

    ​ 透明:服务器知道使用了代理,而且知道真实的IP

    ​ 匿名:服务器知道使用了代理,而且但不知道真实的IP

    ​ 高匿:服务器不知道使用了代理,更不知道真实的IP

    4.requests中的proxies参数
    import requests
    import random
    requests.get(url = target_url,proxies = {'http':''163.125.114.117:8118''},headers =...)
    #防止IP被禁,可以使用代理池
    ht_proxy = [
        {'http':'163.125.114.117:8118'},
        {'http':'183.129.244.16:11063'},
        {'http':':219.159.38.199:56210'}]
    hts_proxy = [
        {'https':'163.125.114.117:8118'},
        {'https':'183.129.244.16:11063'},
        {'https':':219.159.38.199:56210'}]
    #使用User-Agent进行伪装
    header_list = [
        {  # 谷歌
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"},
          # 火狐
        {"user-agent": "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"},
        #  遨游
        {"user-agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)"},
    ]
    requests.get(url = target_url,proxies = random.choice(ht_proxy),
                 headers =  random.choice(header_list))
    
    

    #还可使用随机生成user-agent的第三方库(先安装)
    from fake_useragent import UserAgent
    ua = UserAgent().random
    headers = {
        'User-Agent':ua
    }
    
    #随机产生UA,如果报错则可以添加如下参数:
    #ua = UserAgent(verify_ssl=False,use_cache_server=False).random
    
    #禁用服务器缓存:
    #ua = UserAgent(use_cache_server=False)
    #不缓存数据:
    #ua = UserAgent(cache=False)
    #忽略ssl验证:
    #ua = UserAgent(verify_ssl=False)
    
  • 相关阅读:
    文件IO流
    ArrayList LinkedList vector的区别
    双例集合Map,HashMap常用方法及源码分析
    单例集合List和Set
    集合与数组
    自然排序与定制排序
    String StringBuffer StringBuilder
    String与其他结构的转化
    线程的通信
    死锁,同步锁
  • 原文地址:https://www.cnblogs.com/notfind/p/11491070.html
Copyright © 2011-2022 走看看