1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Wiliam01-Proxy_pool

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

爬虫IP代理池

Скачайте и установите:

  • Скачайте исходный код:
git clone https://gitee.com/Wiliam01/Proxy_pool.git
или же напрямую
https://gitee.com/Wiliam01/Proxy_pool/repository/archive/master.zip скачайте zip-файл.
  • Установите зависимости:
pip install -r requirements.txt

Обратите внимание: поскольку используется AES симметричное шифрование, необходимо установить модуль шифрования. Этот модуль не указан в файле requirements.txt:

В Windows для использования AES необходимо установить модуль pycryptodome:
pip install pycryptodome

На Linux для использования AES необходимо установить модуль pycrypto:
pip install pycrypto
  • Настройте Config/setting.py:
# Config/setting.py — это файл конфигурации проекта

# Настройка базы данных
DB_TYPE = os.getenv('db_type', 'REDIS')
DB_HOST = os.getenv('db_host', '127.0.0.1')
DB_PORT = os.getenv('db_port', 6379)
DB_PASSWORD = os.getenv('db_password', '')
PROXY_NAME = "Proxy" #redis 里边的存储名字
Pool = redis.ConnectionPool(host=DB_HOST,
                            port=6379,
                            password=DB_PASSWORD,
                            max_connections=20)


# Настройка метода получения прокси-ip

PROXY_GETTER = [
    "zhandaye",      # здесь имя активируемой функции получения прокси, можно расширить в IP/get_ip_proxy.py
]

# Настройка API сервиса

SERVER_API = {
    "HOST": "0.0.0.0",#адрес
    "PORT": 6010, #порт
    "token":"123456." #используется для веб-доступа, используется как параметр token
}
     
# После запуска прокси-пул будет доступен по адресу http://127.0.0.1:6010

# Конфигурация ключа и вектора инициализации для алгоритма шифрования
KEY_STR = "123456." #ключ
IV_B = "123456." #вектор инициализации

# Шифрование и дешифрование файла Encryption/python_aes.py
'''python
e = aes.encrypt("hello world")  # шифрование
d = aes.decrypt(e)  # расшифровка
print("Шифрование:", e)
print("Расшифровка:", d)
'''
  • Запустите:
>>>python run.py
#запуск в фоновом режиме на Linux
nohup python run.py

Использование: Через некоторое время вы увидите, что прокси-адреса сохранены в имени PROXY_NAME. Также можно получить доступ через API по адресу http://127.0.0.1:6010.

Api: Общедоступные параметры:

api method Description arg
/ GET описание API None
/get GET случайный выбор одного прокси параметр: num — количество прокси, не более 100
/all GET получение всех прокси для уменьшения объёма данных возвращается 1000 и общее количество
/del GET удаление прокси параметр: proxy_str — список полученных ip

Для использования в сканере: Если вы хотите использовать этот API в коде сканера, вы можете обернуть его в функцию и использовать напрямую, например:

import requests

def get_proxy():
    #полученный пароль аутентификации прокси должен быть расшифрован
    return requests.get("http://127.0.0.1:6010/get?token={}&num=1").json()

def delete_proxy(proxy):
    requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))

Расширение прокси: Проект уже включает функцию zhandaye от Stationery Ye. Для добавления других функций необходимо добавить их имена в переменную PROXY_GETTER в файле Setting. Таким образом, они будут вызываться в файле run.py.

class Get_ip_proxy_:
    def __init__(self):
        self.proxy_json = {
           "proxy_ip":  "",
           "type":1,
           "user":"",
           "password":"",
           "last_status":   1,
           "last_time":  datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        }

    def zhandaye(self):
        while True:
            time.sleep(13)
            # максимальная частота запросов не должна превышать 10 секунд за раз
            # ниже информация о покупке у Stationery Ye
            url = ""
            api_id = ""
            api_psw = aes.encrypt("").decode('utf-8')
            try:
                response = requests.get(url,timeout=3)
                data = json.loads(response.text)
                logger.info(data)
                if data["msg"] == "успешное получение":
                    ip_list = data["data"]["proxy_list"]
                    for x  in ip_list:
                        ip = x["ip"]
                        port = x["port"]
                        self.proxy_json.update({"proxy_ip":ip+":"+str(port),"user":api_id,"password":api_psw})
                        Redis_cliient.put(self.proxy_json)
            except:
                fp = StringIO()
                traceback.print_exc(file=fp)
                message = fp.getvalue()
                logger.error(message)
  • После добавления функции необходимо обновить файл Config/Setting.py, добавив имя нового метода в список PROXY_GETTER:
PROXY_GETTER = [
    "zhandaye",    
]

Обратите внимание, что после добавления пользовательских расширений необходимо строго соблюдать правила, чтобы функции могли быть вызваны правильно. В противном случае это может привести к сбою соответствующего потока функций и выходу из него. Каждая функция должна использовать while True: и time.sleep(), чтобы функция могла продолжать работать. Позже она будет оптимизирована для работы по расписанию. ### Агентский сбор

В настоящее время реализован сбор платных агентов (далее тестирование было проведено лично мной, и я не имею никакого отношения к каким-либо агентам).

Производитель Тип Коэффициент использования Адрес Количество IP-пулов
ZDaye Краткосрочный 3–6 минут Хороший адрес Около 200 000–400 000 IP в день
Агенты Xiaoxiang Краткосрочные 1–3 минуты Хороший адрес Не более 200 000 IP в день

Обратная связь

Поскольку на разработку ушло всего один день, возможно, возникнет много проблем. Пожалуйста, поймите!

Любые вопросы приветствуются в Issues.

Ваша обратная связь сделает этот проект более совершенным.

Вклад кода

@William

Ссылка

https://github.com/jhao104/proxy_pool

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Это текст о защите информации. Он описывает использование симметричного шифрования AES для обеспечения безопасности платных прокси-серверов и предотвращения несанкционированного доступа к данным и их утечки. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Wiliam01-Proxy_pool.git
git@api.gitlife.ru:oschina-mirror/Wiliam01-Proxy_pool.git
oschina-mirror
Wiliam01-Proxy_pool
Wiliam01-Proxy_pool
master