Работа с AstroProxy и немножко извращенства

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
549
Благодарностей
304
Баллы
63
Начал осваивать общий код, теперь делаю штуки которые больше походят на извращенство, но работает:-)
Через метод расширения сделал возможность работать с AstroProxy: получать баланс и менять IP.
Логика работы получилась очень странной, но работает)) может кто тут что подскажет, как лучше реализовать.

Кубик:
string strPath = @"C:\Proxy.txt";
//AstroProxy выглядят так: login:[email protected]:11111@http://node-ru-2.astroproxy.com:11111/api/changeIP?apiToken=1212121212

string Url = instance.MyProxy(strPath); //Устанавливаем прокси и получаем string с Url AstroProxy
string Balance = instance.MyProxyAstroBalance(Url); //Делаем запрос на баланс и получаем string с ответом от сервера
string ChangeIP = instance.MyProxyAstroChange(Url); //Делаем запрос на смену IP и получаем string с новым IP

project.SendInfoToLog("Баланс " + Balance + "\n Новый IP: " + ChangeIP);
Общий Код:
public static class Proxy
{
    public static string MyProxy(this Instance instance, string path)
    {
        List<string> ProxyList = new List<string>();
        ProxyList.AddRange(File.ReadAllLines(path));
        if (ProxyList.Count<=0) throw new Exception ("Список Proxy пустой");
        string strProxy = ProxyList[0];
        ProxyList.RemoveAt(0);
            if (String.IsNullOrEmpty(strProxy)){
                strProxy = ProxyList[0];
                ProxyList.RemoveAt(0);
            }
        ProxyList.Add(strProxy);
        File.WriteAllLines(path, ProxyList);
    
        string[] arrProxy = strProxy.Split('@');
        string[] arrLogPass = arrProxy[0].Split(':');
        string[] arrIPPort = arrProxy[1].Split(':');
        instance.SetProxy(arrIPPort[0],int.Parse(arrIPPort[1]),"http",arrLogPass[0],arrLogPass[1],false,true,true,true);
        try {
            return arrProxy[2];
        }
        catch {
            return null;
        }
    }
    
    public static string MyProxyAstroBalance(this Instance instance, string strUrl)
    {

        if (! strUrl.Contains("http")) strUrl = "http://" + strUrl;
        string strAstroToken = strUrl.Split('=')[1];
        string HttpGet = ZennoPoster.HTTP.Request
                (
                    ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET, "https://astroproxy.com/api/v1/balance?token=" + strAstroToken,
                    "", "", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 15000, "", "", true, 5,
                    new String[]{}, "", false, false
                );
        return HttpGet;
    }
    
    public static string MyProxyAstroChange(this Instance instance, string strUrl)
    {

        if (! strUrl.Contains("http")) strUrl = "http://" + strUrl;
        string strAstroToken = strUrl.Split('=')[1];
        string HttpGet = ZennoPoster.HTTP.Request
            (
                ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET, strUrl, "", "", "", "UTF-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 15000, "", "", true, 5,
                new String[]{}, "", false, false
            );
        return HttpGet;
    }
}
Что мне не нравится, для того чтобы была возможность работы с API Astroproxy, пришлось выводить string из instance.
Логика работы Общего кода. Если работаем с простыми прокси просто вызываем метод instance.MyProxy() и указываем путь файла с прокси.
Если работаем с Astroproxy, то создаем string и присваиваем ему значение из метода instance.MyProxy(), чтобы получить Url для возможности запросить Баланс или Сменить Proxy из пула проксей.
 
  • Спасибо
Реакции: volody00

Marketing i3

Client
Регистрация
11.10.2020
Сообщения
8
Благодарностей
0
Баллы
1
Интересная статья. Мне тоже нужно как то получать ip Astroproxy IP.
Но блин ничего не понятно... Поделитесь готовым проектом.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)