首页 » 技术分享 » 设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理)

设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理)

 

【1】设置Web浏览器的HTTP或HTTPS代理:

原理:非常简单,修改注册表中的两个键值,然后调用InternetSetOption函数更新即可。

步骤:

1、打开注册表:HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Internet Settings
2、ProxyEnable(DWORD):1表示当前IE使用代理服务器,0表示不使用代理服务器
3、ProxyServer(字符串,必须是wchar_t类型):表示代理服务器的值(例如:111.111.111.111:80)
4、更新数据:InternetSetOption(NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,0);

使用或禁用Web代理:

//打开与关闭HTTP代理(OK,TRUE打开,FALSE关闭)
BOOL HTTP::OpenHttpProxy(BOOL IsOpen)
{
    DWORD bProxyEnable = 0;
    LPBYTE pValue = NULL;
    ULONG regsize = 0;
    HKEY hKeyIn = HKEY_CURRENT_USER;
    HKEY hKeyOut = NULL;

    if (RegOpenKeyEx(hKeyIn,
        L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
        0,
        KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY,
        &hKeyOut) != ERROR_SUCCESS)
        goto Err;
    if (IsOpen == FALSE)
    {//是否要关闭
        ULONG regsize = 0;
        if (RegQueryValueEx(hKeyOut,
            L"ProxyEnable",
            NULL,
            NULL,
            NULL,
            &regsize) != ERROR_SUCCESS)
            goto Err;
        if (regsize <= 0)
            goto Err;
        pValue = new BYTE[regsize];
        if (!pValue)
            goto Err;
        ZeroMemory(pValue, sizeof(BYTE)* regsize);
        if (RegQueryValueEx(hKeyOut,
            L"ProxyEnable",
            NULL,
            NULL,
            pValue,
            &regsize) != ERROR_SUCCESS)
            goto Err;
        bProxyEnable = *(DWORD*)pValue;
        if (bProxyEnable == 0)
            goto Err;
        ZeroMemory(pValue, regsize);
        if (RegSetValueEx(hKeyOut, L"ProxyEnable", 0, REG_DWORD, pValue,regsize) != ERROR_SUCCESS)
            goto Err;
    }
    else
    {//打开代理
        //打开代理开关
        ULONG regsize = 0;
        if (RegQueryValueEx(hKeyOut,
            L"ProxyEnable",
            NULL,
            NULL,
            NULL,
            &regsize) != ERROR_SUCCESS)
            goto Err;
        if (regsize <= 0)
            goto Err;
        pValue = new BYTE[regsize];
        if (!pValue)
            goto Err;
        ZeroMemory(pValue, sizeof(BYTE)* regsize);
        if (RegQueryValueEx(hKeyOut,
            L"ProxyEnable",
            NULL,
            NULL,
            pValue,
            &regsize) != ERROR_SUCCESS)
            goto Err;
        bProxyEnable = *(DWORD*)pValue;
        if (bProxyEnable == 0)
        {
            *(int*)pValue = 0x00000001;
            if (RegSetValueEx(hKeyOut, L"ProxyEnable", 0, REG_DWORD, pValue, regsize) != ERROR_SUCCESS)
                goto Err;
        }
    }
    //使设置生效  
    if (!InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0))
        goto Err;
    //清理
    if (pValue)
    {
        delete[]pValue;
        pValue = NULL;
    }
    if (hKeyOut)
    {
        RegCloseKey(hKeyOut);
        hKeyOut = NULL;
    }
    return TRUE;
Err:
    if (pValue)
    {
        delete[]pValue;
        pValue = NULL;
    }
    if (hKeyOut)
    {
        RegCloseKey(hKeyOut);
        hKeyOut = NULL;
    }
    return FALSE;
}

设置所代理的服务器IP以及它的端口号:

//设置代理服务器
BOOL HTTP::SerProxyServer(TCHAR* ServerInfo,int Wordslen)
{
    int  regsize = 0;
    HKEY hKeyIn = HKEY_CURRENT_USER;
    HKEY hKeyOut = NULL;
    //打开注册表
    if (RegOpenKeyEx(hKeyIn,
        L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
        0,
        KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY,
        &hKeyOut) != ERROR_SUCCESS)
        goto Err;
    //设置
    if (RegSetValueEx(hKeyOut, L"ProxyServer", 0, REG_SZ,(BYTE*)ServerInfo, (Wordslen + 1) * sizeof(TCHAR)) != ERROR_SUCCESS)
        goto Err;
    //使设置生效  
    if (!InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0))
        goto Err;
    if (hKeyOut)
    {
        RegCloseKey(hKeyOut);
        hKeyOut = NULL;
    }
    return TRUE;
Err:
    if (hKeyOut)
    {
        RegCloseKey(hKeyOut);
        hKeyOut = NULL;
    }
    return FALSE;
}

附加说明:

1. 网上有很多免费的Http、Https的Web代理服务器。
2. 本人推荐两个网站:http://ip.zdaye.com/(站大爷)、www.go/ubanjia.com(国内外IP代理)
3. 设置注册表跟设置IE的Internet属性里–>连接—>局域网设置里的代理服务器那两个选项是一样的。

实现:

C/C++Web代理的例子

转载自原文链接, 如需删除请联系管理员。

原文链接:设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理),转载请注明来源!

0