前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提供一个采集代理ip网站的思路

提供一个采集代理ip网站的思路

作者头像
用砖头敲代码
发布2022-08-30 11:15:31
3820
发布2022-08-30 11:15:31
举报
文章被收录于专栏:用砖头敲代码

事情起因

我也好奇为什么每次写博客都要写心理活动,害,算了算了,不管那么多了。反正大概的起因都是想试试php+curl+代理ip可不可以做到刷网站ip的效果,然后需要大量代理ip,一个一个复制太慢(懒癌晚期患者)于是便想直接采集下来,方便自己使用。

说干就干

虽然说不知道为什么,但是我感觉你们已经猜到这部分的标题是“说干就干”了,是不是还少一句现在补上。想到了不做不是我的性格,所以说既让想到了就要实现! 首先我们去度娘搜索一下代理ip的网站,找一个代理ip多还免费的网站,然后我选的是快代理(不是广告)

1.png
1.png

然后Ctrl+U分析网页源代码,然后发现我们需要获取的数据在<tbody></tbody>之间,然后我们先利用正则表达式把<tbody></tbody>之间的内容都过滤出来。

代码语言:javascript
复制
<?php
$a = get_curl("https://www.kuaidaili.com/free/inha/1/");
preg_match_all("/<tbody>(.*)<\\/tbody>/si",$a,$b);
$array = $b[0][0];

就这样$array这个的内容就是这个页面<tbody></tbody>之间的内容了,接着我们需要把字符串替换一下,替换成我们需要的形式

代码语言:javascript
复制
//需替换的字符串
$text = ['<tbody>','</tbody>','<tr>','</td>',' ',"\n"];
//替换成的字符串
$replace = ['','','','+','',''];
$array = array_filter(explode('</tr>',str_replace($text,$replace,$array)));

就这样$array大变身,成了方便我们进行下一步操作的形式,我们可以利用explode()函数来将它分割成了数组,所以说下面我们可以加一个for循环来生成代理ip的数组

代码语言:javascript
复制
for($i=0;$i<count($array);$i++){
  //需要替换一下剩下的内容
  $arr1 = ['<tddata-title="IP">','<tddata-title="PORT">','<tddata-title="匿名度">','<tddata-title="类型">','<tddata-title="位置">','<tddata-title="响应速度">','<tddata-title="最后验证时间">'];
  $arr2 = ['','','','','','',''];
  //再再再次分割数组
  $info = array_filter(explode('+',str_replace($arr1,$arr2,$array[$i])));
  //生成代理ip列表
  $proxy[] = ['ip'=>$info[0],'port'=>$info[1],'anonymous'=>$info[2],'type'=>$info[3],'location'=>$info[4]];
}

就这样我们已经完成了所有的步骤,$proxy就是整个代理ip的列表,我们只采集了第一页,需要其他页码可以改一下页码,但是我还是比较喜欢json,所以说还是把它当做json输出吧。

代码语言:javascript
复制
exit(json_encode($proxy));

查看效果

本次测试一下,看看输出的json是什么样的

代码语言:javascript
复制
// 20200405201929
// http://127.0.0.1/

[
  {
    "ip": "171.11.178.164",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "河南省济源市电信"
  },
  {
    "ip": "175.42.123.178",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "福建省宁德市联通"
  },
  {
    "ip": "163.204.243.10",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "广东省汕尾市联通"
  },
  {
    "ip": "1.198.111.240",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "河南省鹤壁市电信"
  }
]

结尾的话

其实我本来想直接上传的服务器然后提供接口的,但是后来发现这里的代理ip根本用不了(也用可能是我不会用)所以说还是提供一个思路出来,方便你们改代码。

如无特殊说明《提供一个采集代理ip网站的思路》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-118.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事情起因
  • 说干就干
  • 查看效果
  • 结尾的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档