- Регистрация
- 03.05.2016
- Сообщения
- 840
- Благодарностей
- 583
- Баллы
- 93
Начал осваивать общий код, теперь делаю штуки которые больше походят на извращенство, но работает
Через метод расширения сделал возможность работать с AstroProxy: получать баланс и менять IP.
Логика работы получилась очень странной, но работает)) может кто тут что подскажет, как лучше реализовать.
Что мне не нравится, для того чтобы была возможность работы с API Astroproxy, пришлось выводить string из instance.
Логика работы Общего кода. Если работаем с простыми прокси просто вызываем метод instance.MyProxy() и указываем путь файла с прокси.
Если работаем с Astroproxy, то создаем string и присваиваем ему значение из метода instance.MyProxy(), чтобы получить Url для возможности запросить Баланс или Сменить Proxy из пула проксей.

Через метод расширения сделал возможность работать с 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;
}
}
Логика работы Общего кода. Если работаем с простыми прокси просто вызываем метод instance.MyProxy() и указываем путь файла с прокси.
Если работаем с Astroproxy, то создаем string и присваиваем ему значение из метода instance.MyProxy(), чтобы получить Url для возможности запросить Баланс или Сменить Proxy из пула проксей.