【代理脚本】只有无尽的跳转,没有封禁的IP
脚本简介:
在做渗透测试的过程中,最让人头疼的无非就是ip被封了。因为学习需要简单的写了一个快代理的高匿代理ip的爬虫。该脚本涉及了python爬虫的诸多知识点的运用。简单的实现爬取ip并对ip进行有效性验证。可将脚本逻辑进行修改,实现防封的端口爆破、目录扫描、密码爆破等脚本的编写。实现一个动态的代理池。从此妈妈再也不用担心ip被ban了。
知识运用:
1、 数据分页处理
2、 requests模块发送数据请求
3、 etree构造了一个XPath解析对象
4、 xpath定位
5、使用request进行代理有效性验证
脚本代码:
#!/user/bin/
# -*- coding:UTF-8 -*-
# Author:Master
#导入模块
import requests
from lxml import etree
#for循环实现分页处理
for page in range(1,1000):
#请求地址
url = f'https://www.kuaidaili.com/free/inha/{page}/'
#UA伪装
header = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
#保存的文件名
name = 'proxy_ip.txt'
#返回请求包
page_text = requests.get(url=url,headers=header).text
#构造了一个XPath解析对象并对HTML文本进行自动修正
tree = etree.HTML(page_text)
#使用xpath定位ip所在的tr标签并生成所有tr标签列表
tr_list = tree.xpath('//*[@id="list"]/table/tbody/tr')
#遍历tr标签
for td in tr_list:
#定位ip内容
ip = td.xpath('./td[1]/text()')[0]
#定位端口内容
port = td.xpath('./td[2]/text()')[0]
#拼接完整的ip
all_ip = ip+':'+port
#测试代理ip的有效性
try:
#request使用代理ip发送get请求测试代理有效性
requests.get('https://www.baidu.com/', proxies={"http": f"'http://'+{all_ip}"})
except:
#输出无效代理ip
print(all_ip+'代理无效!')
else:
#代理ip有效存实现持久化存储
with open(name,'a',encoding='utf-8') as fp:
fp.write(all_ip+'\n')
#输出爬取完成页数
print(f'第{page}页爬取结束.')
本文来自博客园,作者:Master先生,转载请注明原文链接:https://www.cnblogs.com/mastersir/p/16260215.html