通过我的扩展程序在Chrome中设置代理

时间:2019-07-19 22:02:43

标签: javascript google-chrome go google-chrome-extension proxy

我正在尝试制作Chrome扩展程序,该扩展程序可以在浏览器中打开或关闭代理。我使用有关chrome扩展的文档在javascript中编写了一些代码,有趣的是,有时扩展正常。

以下是Golang中的一些代码,该代码循环访问https代理地址列表,使用该代理地址向www.stackoverflow发出http请求,并且响应状态代码为2xx(因为某些地址无效,不建议使用,不可用,被禁止)等),它会标记代理地址正确并打印出来。

代码的第二个块设置了具有找到的“好”代理地址的chrome.proxy.settings属性。现在,我只是手动复制粘贴。

问题是:为什么Golang会选择“错误的”代理地址,给我列出“良好”的代理,但是当我尝试设置任何“良好”的代理时,Chrome会给我我ERR_PROXY_CONNECTION_FAILED

编辑:在Go中添加User-Agent标头,在JavaScript中将scheme : https字段添加到config对象以进行代理。 仍然无法正常工作。

// checkProxy returns true if proxy adress a is valid and
// response by http request with this proxy is ok (2xx)
//185.132.179.108:1080
//185.132.179.107:1080
func checkProxy(a string) (string, bool) {
    proxyUrl, err := url.Parse("http://" + a)
    httpClient := &http.Client{     
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyUrl),
        },
    }
    req, err := http.NewRequest("GET", "http://stackoverflow.com", nil)
    if err != nil {
        return "", false
    }
    req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36")
    response, err := httpClient.Do(req)
    if err != nil {
        return "", false
    }   
    if response.StatusCode <= 200 && response.StatusCode >= 299 {
        return "", false
    } else {
        return a, true
    }
}

function setProxySettings(iip, pport) {
    var config = {
        mode: "fixed_servers",
        rules: {
            //https://www.proxy-list.download/HTTPS
            // host: "107.191.63.8",
            // port: 32482
            singleProxy: {
                scheme: "https",
                host: iip,
                port: parseInt(pport)
            },
        }
    };
    chrome.proxy.settings.set({
            value: config,
            scope: 'regular'
        },
        function () {});
}

0 个答案:

没有答案