Untitled
user_2299906
plain_text
3 years ago
4.3 kB
12
Indexable
public class ProxyLoginExtension
{
string ProxyLogin_Ext_manifest = "{\r\n \"version\": \"1.0.0\",\r\n \"manifest_version\": 2,\r\n \"name\": \"ChromeProxy\",\r\n \"permissions\": [\r\n \"proxy\",\r\n \"<all_urls>\",\r\n \"webRequest\",\r\n \"webRequestBlocking\"\r\n ],\r\n \"background\": {\r\n \"scripts\": [\r\n \"background.js\"\r\n ],\r\n \"persistent\": true\r\n },\r\n \"minimum_chrome_version\": \"22.0.0\"\r\n}";
string ProxyLogin_Ext_background = "var config = {\r\n\tmode: \"fixed_servers\",\r\n\trules: {\r\n\t\tsingleProxy: {\r\n\t\t\tscheme: \"http\",\r\n\t\t\thost: \"{host}\",\r\n\t\t\tport: {port}\r\n\t\t},\r\n\t\tbypassList: [\"localhost\"]\r\n\t}\r\n};\r\nvar authCre = {\r\n\tauthCredentials: {\r\n\t\tusername: \"{username}\",\r\n\t\tpassword: \"{password}\"\r\n\t}\r\n};\r\n\r\nchrome.proxy.settings.set({ value: config, scope: \"regular\" }, function () { });\r\nchrome.proxy.onProxyError.addListener(function (details) {\r\n\tconsole.log(details);\r\n});\r\nchrome.webRequest.onAuthRequired.addListener(\r\n\tfunction callbackFn(details) {\r\n\t\tconsole.log(details);\r\n\t\treturn authCre;\r\n\t},\r\n\t{ urls: [\"<all_urls>\"] },\r\n\t['blocking']\r\n);";
public Match RegexMatch(string input, string pattern)
{
if (string.IsNullOrEmpty(input)) return Match.Empty;
else return Regex.Match(input, pattern);
}
string trueproxy(string proxyurl)
{
if (!string.IsNullOrEmpty(proxyurl))
{
if (Regex.IsMatch(proxyurl, "(.*?):(.*?)@(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+)"))
{
string user = RegexMatch(proxyurl, "(.*?):(.*?)@(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+)").Groups[1].Value;
string pass = RegexMatch(proxyurl, "(.*?):(.*?)@(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+)").Groups[2].Value;
string host = RegexMatch(proxyurl, "(.*?):(.*?)@(.*?):(\\d+)").Groups[3].Value;
string port = RegexMatch(proxyurl, "(.*?):(.*?)@(.*?):(\\d+)").Groups[4].Value;
proxyurl = host + ":" + port + "|" + user + "|" + pass;
}
else if (Regex.IsMatch(proxyurl, "(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+):(.*?):(.*?)"))
{
string user = RegexMatch(proxyurl, "(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+):(.*?):(.*?)$").Groups[6].Value;
string pass = RegexMatch(proxyurl, "(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3}):(\\d+):(.*?):(.*?)$").Groups[7].Value;
string host = RegexMatch(proxyurl, "(.*?):(.*?):(.*?):(.+)").Groups[1].Value;
string port = RegexMatch(proxyurl, "(.*?):(.*?):(.*?):(.+)").Groups[2].Value;
proxyurl = host + ":" + port + "|" + user + "|" + pass;
}
}
return proxyurl;
}
public void GenerateExtension(string path, string proxyurl)
{
string[] temp = trueproxy(proxyurl).Replace("|", ":").Split(':');
if (temp.Length < 2) return;
if (string.IsNullOrEmpty(temp[0]) || string.IsNullOrEmpty(temp[1])) return;
string host = temp[0];
string port = temp[1];
string username = "";
string password = "";
if (temp.Length >= 4)
{
username = temp[2];
password = temp[3];
}
string background_ = ProxyLogin_Ext_background
.Replace("{host}", host)
.Replace("{port}", port.ToString())
.Replace("{username}", username ?? string.Empty)
.Replace("{password}", password ?? string.Empty);
if (Directory.Exists(path)) try { Directory.Delete(path); } catch { }
Directory.CreateDirectory(path);
File.WriteAllText(Path.Combine(path, "background.js"), background_);
File.WriteAllText(Path.Combine(path, "manifest.json"), ProxyLogin_Ext_manifest);
}
}Editor is loading...