【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

这篇具有很好参考价值的文章主要介绍了【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

之前用过芝麻IP,写过这几篇文章
《【Python】芝麻HTTP代理系列保姆级全套攻略(对接教程+自动领取每日IP+IP最优算法)》
《【Python】记录抓包分析自动领取芝麻HTTP每日免费IP(成品+教程)》
《爬虫增加代理池:使用稳定第三方芝麻代理IP 教程(详细可用)》
后面的项目都用他家的代理是因为,每天都有免费额度,不知不觉薅羊毛275天了,而且上次使用还不能生成代码,提交了建议后没想到真的实现了
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化


目录:


设计思路:

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

用户通过小程序访问孔夫子的图书详情接口,访问前通过检查redis判断是否有代理IP,没有则生成并记录去redis,有则直接使用,因为接口使用不会存在长时间连接的情况,基本都是一次性访问,所以,本次方案行得通。

通过购买代理次数包,每次提取一个代理供接口调用使用,因为用户使用时段不一样,做到能最大限度节约成本,一个IP在有效时间内供多人使用,可以看下他们的价目表,开发可以先使用体验套餐

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

这里由于没有额度了,我先开通套餐
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化


获取代理接口

1、通过配置参数获取接口
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

2、通过curl获得php访问代码

 // 初始化 cURL
        $ch = curl_init();
        
        // 设置 cURL 参数
        curl_setopt($ch, CURLOPT_URL, "http://**********s=");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        
        // 发送请求并获取响应
        $response = curl_exec($ch);
        
        // 关闭 cURL
        curl_close($ch);

        $data = json_decode(trim($response),true);

3、通过访问观察下返回情况

有ip、端口、以及过期时间

{
	"code": 0,
	"data": [{
		"ip": "111.76.65.216",
		"port": 4278,
		"expire_time": "2023-06-16 16:46:05"
	}],
	"msg": "0",
	"success": true
}

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化


封装IP检测模块

在控制器中,新建zhimahttp方法
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

如果redis没有该记录则重新获取IP,具体可以看流程图👇
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

过期时间换算

获取到过期时间后,通过计算现在与目标过期的时间,确定存储倒计时

 // 获取当前时间戳
    $now = time();
    
    // 将时间字符串转换为时间戳
    $target = strtotime($expireTime);
    
    // 计算时间差
    $diff = $target - $now;
    // 存入redis
    $redis->set($proxy_name,$proxyServer,$diff);

最后,完整封装代码如下:

 // 芝麻ip代理配置
       public function zhimahttp(){
      
        $proxy_name="proxy_ip";//定义存储名
        $redis = new Redis();
           //查询redis是否有记录
        $re= $redis->get("$proxy_name");
               if ($re) {
                   // 存在记录使用即可
                   return "$re";
                die();
               } else {
                   //不存在记录,从芝麻ip获取并存储
               // 初始化 cURL
        $ch = curl_init();
        
        // 设置 cURL 参数
        curl_setopt($ch, CURLOPT_URL, "htt**********ns=");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        
        // 发送请求并获取响应
        $response = curl_exec($ch);
        
        // 关闭 cURL
        curl_close($ch);

        $data = json_decode(trim($response),true);
        // 判断code的值
if ($data['code'] == 0) {
    // 解析ip、port、expire_time
    $ip = $data['data'][0]['ip'];
    $port = $data['data'][0]['port'];
    $expireTime = $data['data'][0]['expire_time'];
    
    // 输出解析结果
    // echo "IP: $ip\n";
    // echo "Port: $port\n";
    // echo "expireTime: $expireTime\n";
    $proxyServer = 'http://' . $ip.':'.$port;
    // echo "$proxyServer";
    // 获取当前时间戳
    $now = time();
    
    // 将时间字符串转换为时间戳
    $target = strtotime($expireTime);
    
    // 计算时间差
    $diff = $target - $now;
    // 存入redis
    $redis->set($proxy_name,$proxyServer,$diff);
    return $proxyServer;
} else {
      // exit('ip 不正确');
      die(
        json_encode(
            array(
            'code' => 100,
            'data'=>'',
            'msg' => 'ip 不正确'
        ),480)
);
}
            
        
               }
        
        
    }

调用检测模块:

上面的代码中,我们已经在控制器中封装了方法,如何使用呢?

在tp5中调用方法即可,调用方法:

  //代理ip   
 $proxyServer =$this->zhimahttp();
 //代理ip   

结合我的业务代码,在访问接口前进行调用检查即可,接下来是一个示例:

 //调用代理ip检查   
 $proxyServer =$this->zhimahttp(); 
    
 $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://app.kongfz.com/invokeSearch/app/product/productSearchV2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxyServer);
$response = curl_exec($ch);

curl_close($ch);

注意:

curl_setopt($ch, CURLOPT_PROXY, $proxyServer);
记得在上面加上,不然代理ip没用上

接口测试

访问一次目标接口,由于第一次redis中没有记录,所以会存入名为proxy_ip的数据
【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

再次访问(记录没有过期),由于记录存在所以就直接返回代理ip了,测试了下小程序接口可以正常使用

最后

喜欢爬虫类文章的可以订阅我专栏哦
⭐⭐欢迎订阅⭐⭐ ⭐⭐欢迎订阅⭐⭐
🚀Python爬虫项目实战系列文章!!
⭐⭐欢迎订阅⭐⭐ ⭐⭐欢迎订阅⭐⭐

🚀Python爬虫项目实战系列文章!!
⭐⭐往期文章⭐⭐

【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)
【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

⭐⭐往期文章⭐⭐文章来源地址https://www.toymoban.com/news/detail-489920.html

到了这里,关于【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探秘高效爬虫技巧:Selenium + 代理解决IP封禁问题!----selenium爬虫添加代理

    我们使用selenium用于爬虫,可能由于单个域名下短时间内请求过多,造成IP封禁的问题。为了应对这个问题,我们通常会采取添加代理的方式。 为了绕开IP封禁问题,最常见的思路是使用代理。在Chrome浏览器中,我们可以通过白名单的方式在代理网站上添加自己的任务机公网

    2024年02月05日
    浏览(39)
  • 探究HTTP代理爬虫的反爬虫策略

    在当前信息爆炸的时代,海量的数据成为了企业发展和决策的关键资源。然而,越来越多的网站为了保护数据和用户隐私的安全,采取了各种反爬虫策略。作为一家专业的HTTP代理产品供应商,我们一直在研究和优化反爬虫策略,为用户提供更好的数据采集解决方案。今天,我

    2024年02月15日
    浏览(22)
  • 【Python爬虫笔记】爬虫代理IP与访问控制

    一、前言 在进行网络爬虫的开发过程中,有许多限制因素阻碍着爬虫程序的正常运行,其中最主要的一点就是反爬虫机制。为了防止爬虫程序在短时间内大量地请求同一个网站,网站管理者会使用一些方式进行限制。这时候,代理IP就是解决方案之一。 本文主要介绍如何在爬

    2024年02月09日
    浏览(37)
  • javaScript蓝桥杯-----芝麻开门

    在阿里巴巴和四十大盗的故事中,阿里巴巴因为无意中知道了开门的咒语人生发生了翻天覆地的变化,四十大盗也因为咒语的泄露最终丧命。芝麻开门的咒语作为重要的信息推动着故事的发展。下面由你来为门设置这道机关,输入芝麻开门后才能放行。 本题已经内置了初始代

    2024年02月07日
    浏览(26)
  • python爬虫-------urllib代理和代理池(第十七天)

    🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨  嗨嗨嗨,兄弟姐妹们。我是喔的嘛呀。今天的学习内容是:爬虫 urllib代理和代理池 目录 一、爬虫 urllib——代理

    2024年04月14日
    浏览(26)
  • 网络爬虫中的代理技术:socks5代理和HTTP代理

         网络爬虫是一种非常重要的数据采集工具,但是在进行网络爬虫时,我们经常会遇到一些限制,比如IP封锁、反爬虫机制等,这些限制会影响我们的数据采集效果。为了解决这些问题,我们可以使用代理服务器,其中socks5代理和HTTP代理是两种常用的代理方式。 首先,

    2024年02月08日
    浏览(37)
  • 【Python】爬虫代理IP的使用+建立代理IP池

    目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时,我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制,我们可以使用代理IP。代理IP是指通过代

    2024年02月22日
    浏览(37)
  • 【网络爬虫】模拟登录与代理

       个人主页:北·海  🎐CSDN新晋作者  🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:C/C++ 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗  

    2024年02月12日
    浏览(39)
  • Python爬虫实战(二):爬取快代理构建代理IP池

    博主开始更新爬虫实战教程了, 期待你的关注!!! 第一篇:Python爬虫实战(一):翻页爬取数据存入SqlServer 第二篇:Python爬虫实战(二):爬取快代理构建代理IP池 点赞收藏博主更有创作动力哟,以后常更!!! 使用爬虫时,大部分网站都有一定的反爬措施,有些网站会

    2024年02月11日
    浏览(30)
  • python爬虫-代理ip理解

    目录 1、为什么使用代理IP 2、代理IP 3、IP池 4、代理分类: 5、python中使用代理IP 6、如何找可以使用的代理IP 7、拿到IP后,测试IP的有效性 8、扩展理解正向代理和反向代理 1、为什么使用代理IP 就是为了防止ip被封禁,提高爬虫的效率和稳定;  反反爬使用代理ip是非常必要的

    2024年02月02日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包