Protektor-Desura / Archon

A Home Server for media streaming, game streaming, home automation and management.
GNU Affero General Public License v3.0
354 stars 10 forks source link

JDownloader2 Proxy List #15

Open Protektor-Desura opened 2 years ago

Protektor-Desura commented 2 years ago

Come up with a script to download and add a list of proxy servers to JDownloader 2 automatically.

Protektor-Desura commented 2 years ago

Proxy list generator program https://github.com/fate0/getproxy

Lists https://github.com/fate0/proxylist https://github.com/clarketm/proxy-list

Protektor-Desura commented 2 years ago

Script to auto download a list of proxys on launch for JDownloader. Go to Settings, then Event Scripter, then add this script, tell it to activate on "Jdownloader started".

//Proxylist updates
//disablePermissionChecks();
//setNotifyOnException(true);

var proxy_test = 1; //1=ON,0=OFF
var max_proxies = 0; //0=Unlimited
var old_proxylist = [];
var new_proxylist = "";
var add_proxy = JSON.parse("{\"proxy\" : {\"username\" : null,\"password\" : null,\"port\" : 80,\"address\" : null,\"type\" : \"NONE\",\"preferNativeImplementation\" : false,\"resolveHostName\" : false,\"connectMethodPrefered\" : false},\"rangeRequestsSupported\" : true,\"filter\" : null,\"pac\" : false,\"reconnectSupported\" : false,\"enabled\" : true}");
var filter = new Array();

var settings = "org.jdownloader.updatev2.InternetConnectionSettings";
var storage = "cfg/org.jdownloader.settings.InternetConnectionSettings";
old_proxylist = callAPI("config", "get", settings, storage, "customproxylist");

var html = getPage("https" + "://raw.githubusercontent.com/fate0/proxylist/master/proxy.list");
var lines = html.split("\n");

for (var key in old_proxylist) {
    if (old_proxylist.hasOwnProperty(key)) {
        if (old_proxylist[key].proxy.type == "DIRECT" || old_proxylist[key].proxy.type == "NONE" || old_proxylist[key].enabled == false) {
            if (new_proxylist == "") {
                new_proxylist += JSON.stringify(old_proxylist[key]);
            } else {
                new_proxylist += "," + JSON.stringify(old_proxylist[key]);
            }
        }
    }
}

var myBr = getBrowser();
for (var i = 0; i < lines.length; ++i) {
    if (IsValidJSONString(lines[i])) {
        var temp_JSON = JSON.parse(lines[i]);
        var add_proxy_new = add_proxy;
        add_proxy_new.proxy.type = temp_JSON.type.toUpperCase();
        add_proxy_new.proxy.port = temp_JSON.port;
        add_proxy_new.proxy.address = temp_JSON.host;

        var errorcheck = 0;
        if (proxy_test == 1) {
            myBr.setProxy(temp_JSON.type + "://" + temp_JSON.host + ":" + temp_JSON.port);
            try {
                myBr.getPage("http://www.google.com/");
            } catch (e) {
                errorcheck = 1;
            }
        }

        if (errorcheck == 0 && proxy_test == 1 || proxy_test != 1) {

            if (add_proxy_new.proxy.address && filter[temp_JSON.host] != true) {
                filter[temp_JSON.host] = true;
                if (new_proxylist == "") {
                    new_proxylist += JSON.stringify(add_proxy_new);
                } else {
                    new_proxylist += "," + JSON.stringify(add_proxy_new);
                }
            }
        }
    }
    if (i >= max_proxies && max_proxies > 0) {
        break;
    }
}
callAPI("config", "set", settings, storage, "customproxylist", "[" + new_proxylist + "]");

function IsValidJSONString(str) {
    if (typeof str !== "string") {
        return false;
    }
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}
Protektor-Desura commented 2 years ago

Here is a docker to handle proxies.

https://github.com/39ff/docker-rotating-proxy

Protektor-Desura commented 2 years ago

By default JDownloader will only use first possible proxy for free download and then switch to next one once the limit is reached -> doesn't increase parallel downloads. You can change:

Settings->Advanced Settings-> GeneralSettings.freeproxybalancemode

to let JDownloader use multiple proxies at the same time and thus download multiple files at the same time as free user.

RANDOM -> Choose next possible random proxy CYCLE -> First, next, next,next.. BALANCE-> try to balance free downloads over available proxies. (RECOMMENDED)

JDownloader will NOT use multiple proxies/switch for downloads with accounts to prevent account blocking because of multiple IPs.