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