欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-04 07:58:03
...

【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属性里–>连接—>局域网设置里的代理服务器那两个选项是一样的。

实现:

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