Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Как это применить? #1

Open
zendixx opened this issue Mar 24, 2024 · 10 comments
Open

Как это применить? #1

zendixx opened this issue Mar 24, 2024 · 10 comments

Comments

@zendixx
Copy link

zendixx commented Mar 24, 2024

Классный скрипт

@emfresya
Copy link
Owner

Привет, ты хочешь getgrass набить?

@zendixx
Copy link
Author

zendixx commented Mar 26, 2024

Привет, уже проверил, работает на ура! Но жрал трафика на 100 проксях сначала много, после под настроил и сейчас 100 прокси жрут по расчетам 1 гигабайт за 10 дней, выходит в 18$ за месяц, с учётом резедннстких прокси 6$ за гигабайт. Пока это лучшее решение, что я смог найти, спасибо) Если нужно могу поделиться немного переделанным скриптом, трафика поменьше жрёт и работает на http, но это не проблема, я просто путем опытов узнал, что http меньше ест трафика, а на счёт таймингов

на отправку asyncio.sleep=45 вместо asyncio.sleep=20

на ответ asyncio.sleep=20 вместо 'asyncio.sleep=1'

Правда я проверял эти тайминги на модифицированном скрипте, на исходнике, не знаю сколько будет жрать.

@emfresya
Copy link
Owner

а как ты сделал на http?

если софт подает websocket

@zendixx
Copy link
Author

zendixx commented Mar 26, 2024

Вот скрипт под http и чуть урезанный с таймингами:

import asyncio
import random
import ssl
import json
import time
import uuid
from loguru import logger
from websockets_proxy import Proxy, proxy_connect
from fake_useragent import UserAgent

async def connect_to_wss(proxy_server, user_id):
    device_id = str(uuid.uuid3(uuid.NAMESPACE_DNS, proxy_server))
    logger.info(device_id)
    
    while True:
        try:
            await asyncio.sleep(random.uniform(1, 10))
            custom_headers = {
                "User-Agent": UserAgent().random
            }
            ssl_context = ssl.create_default_context()
            ssl_context.check_hostname = False
            ssl_context.verify_mode = ssl.CERT_NONE
            uri = "wss://proxy.wynd.network:4650/"
            server_hostname = "proxy.wynd.network"
            proxy = Proxy.from_url(proxy_server)
            
            async with proxy_connect(uri, proxy=proxy, ssl=ssl_context, server_hostname=server_hostname, extra_headers=custom_headers) as websocket:
                async def send_ping():
                    while True:
                        send_message = json.dumps({"id": str(uuid.uuid4()), "version": "1.0.0", "action": "PING", "data": {}})
                        logger.debug(send_message)
                        await websocket.send(send_message)
                        await asyncio.sleep(45)
                
                await asyncio.sleep(20)
                asyncio.create_task(send_ping())
                
                while True:
                    response = await websocket.recv()
                    message = json.loads(response)
                    logger.info(message)
                    
                    if message.get("action") == "AUTH":
                        auth_response = {
                            "id": message["id"],
                            "origin_action": "AUTH",
                            "result": {
                                "browser_id": device_id,
                                "user_id": user_id,
                                "user_agent": custom_headers['User-Agent'],
                                "timestamp": int(time.time()),
                                "device_type": "extension",
                                "version": "3.3.2"
                            }
                        }
                        logger.debug(auth_response)
                        await websocket.send(json.dumps(auth_response))
                    
                    elif message.get("action") == "PONG":
                        pong_response = {"id": message["id"], "origin_action": "PONG"}
                        logger.debug(pong_response)
                        await websocket.send(json.dumps(pong_response))
        
        except Exception as e:
            logger.error(e)
            logger.error(proxy_server)

async def main():
    _user_id = 'ВСТАВЬТЕ СВОЙ ЮЗЕР ИД'
    with open('proxy_list(for1).txt', 'r') as file:
        proxy_server_list = file.read().splitlines()
    
    tasks = [asyncio.create_task(connect_to_wss(proxy_server, _user_id)) for proxy_server in proxy_server_list]
    await asyncio.gather(*tasks)

if __name__ == '__main__':
    asyncio.run(main())

Ну и скрипт под перезапись прокси))

#открываем
with open('proxy_list(for1).txt', 'r') as file:
    proxies = file.readlines()

#добавляем "http://" перед IP-адресом
http_proxies = ['http://' + proxy.strip() for proxy in proxies]

# открываем
with open('proxy_list(for1).txt', 'w') as file:
    #перезаписываем
    file.write('\n'.join(http_proxies))

@zendixx
Copy link
Author

zendixx commented Mar 26, 2024

Я хочу ещё с таймингами поиграть планирую 3 сотни нод завести, пока у меня 10 на debian(25€ за 10 на месяц) и вот 100 на твоём скрипте (примерно 35$ в месяц). Разными способами попробую 1 аккаунт на 200 и 5 аккаунтов по 20 и по профилям попробую штук 10

@emfresya
Copy link
Owner

не советую использовать больше 10 проксей для одного аккаунта, будет блокировка

@emfresya
Copy link
Owner

и в моем скрипте взяты тайминги с официального расширения, не знаю влияет ли это как-то, но да, там такие тайминги прописаны

@zendixx
Copy link
Author

zendixx commented Mar 26, 2024

Официальное расширение ест меньше трафика чем заявленное, если на антидетект браузерах открывать, а тут слишком частая отправка, тоже не знаю будут ли они за тайминги следить, на счёт 10 акков попытаю 100 удачу тогда остальные 200 разобью

@zendixx
Copy link
Author

zendixx commented Mar 28, 2024

А как ты узнал хост куда нужно отправлять запросы?

@orlean24
Copy link

Спасибо огромное автору за скрипт.
zendixx пользую твой переделанный с http прокси, как у тебя 1г хватает на 10 дней? У меня на 9 часов для 100 штк.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants