如何在爬虫过程中精确控制ip的使用

在进行爬虫时,除了常见的不用登录就能爬取的网站,还有一类需要先登录的网站。比如豆瓣、知乎等,但是对于需要账号登陆的目标网站一般的限制都是比较严的,那么针对这样的问题有什么比较好的避免反爬限制策略呢?
一般面对这样的情况,我们可以选择通过登录获取cookie然后再配合代理ip进行数据的获取。这里就我们着重的分享下如何在使用代理过程中精确的控制ip切换。列如我们访问的目标网站需要登录,获取数据两个请求在一个Ip下进行。这里我们就可以通过设置随机数来实现,tunnel = random.randint(1,10000)headers = {“Proxy-Tunnel”: str(tunnel)},(1)当tunnel每次不同,就会给每个HTTP请求随机分配一个代理IP。(2)如果tunnel相同。这些HTTP请求的代理IP就是相同的,直到使用到最后时效。我们就以访问豆瓣为例看下使用过程,代码示例来源于https://www.16yun.cn/help/ss_demo/#1python

#! -*- encoding:utf-8 -*-

    import requests
    import random

    # 要访问的目标页面
    targetUrl = "https://www.douban.com/"

    # 要访问的目标HTTPS页面
    # targetUrl = "https://www.douban.com/"

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

    # 代理验证信息
    proxyUser = "16PLWHBW"
    proxyPass = "379779	"

    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

但是这这种代理的使用方式只适合在动态转发模式里,有需要的小伙伴可以实践下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值