【代理脚本】只有无尽的跳转,没有封禁的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}页爬取结束.')

在这里插入图片描述

posted @ 2022-05-11 22:15  Master先生  阅读(212)  评论(0编辑  收藏  举报