Добрый день, сервисов прокси очень много, и все они отдают формат по разному, а в кубике только один формат принимается, для этого было разработана функция на c# для преобразованию к общему виду
Спасибо за внимание
C#:
string NormalizeProxy(string proxy)
{
try
{
if (string.IsNullOrWhiteSpace(proxy))
{
return "";
}
proxy = proxy.Trim();
string pattern = @"^(?:(?<scheme>https?|socks[45])://)?"
+ @"(?:(?<username>[^:@\[\]]+):(?<password>[^@\[\]]+)@)?"
+ @"(?<host>\[[^\]]+\]|[^:@]+)"
+ @"(?::(?<port>\d+))"
+ @"(?::(?<username2>[^:]+)(?::(?<password2>.+))?)?$";
Match match = Regex.Match(proxy, pattern);
if (!match.Success)
{
pattern = @"^(?<username>[^:@]+):(?<password>[^@]+)@(?<host>\[[^\]]+\]|[^:]+):(?<port>\d+)$";
match = Regex.Match(proxy, pattern);
if (!match.Success)
{
return "";
}
}
string scheme = match.Groups["scheme"].Success ? match.Groups["scheme"].Value : "http";
string username = match.Groups["username"].Success ? match.Groups["username"].Value
: (match.Groups["username2"].Success ? match.Groups["username2"].Value : "");
string password = match.Groups["password"].Success ? match.Groups["password"].Value
: (match.Groups["password2"].Success ? match.Groups["password2"].Value : "");
string host = match.Groups["host"].Value.Trim('[', ']');
string port = match.Groups["port"].Value;
if (string.IsNullOrEmpty(host) || string.IsNullOrEmpty(port))
{
return "";
}
string netloc;
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
netloc = $"{username}:{password}@{host}:{port}";
}
else if (!string.IsNullOrEmpty(username))
{
netloc = $"{username}@{host}:{port}";
}
else
{
netloc = $"{host}:{port}";
}
return $"{scheme}://{netloc}";
}
catch
{
return "";
}
}
void info(string word){ project.SendInfoToLog(word.ToString(), "[CapGuru][PP]", true); }
string[] proxies = {
"http://user:pass@192.168.1.1:8080",
"socks4://user:pass@192.168.1.1:8050",
"socks5://user:pass@192.168.1.1:8090",
"192.168.1.1:8080:user:pass",
"192.168.1.1:8080",
"[2001:db8::1]:8080:user:pass",
"[2001:db8::1]:8080",
"http://[2001:db8::1]:8080",
"socks5://[2001:db8::1]:8050",
"socks4://[2001:db8::1]:8090",
"",
"e6e0eae4e40085c9edb:97bdaebceb9f2a8616@de.op-proxy.com:15000"
};
foreach (var proxy in proxies)
{
try
{
string normalized = NormalizeProxy(proxy);
info($"Original: {proxy} -> Normalized: {normalized}");
}
catch (ArgumentException e)
{
info($"Error: {e.Message}");
}
}