您的位置:首页 > 理论基础 > 计算机网络

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

2018-01-21 09:16 513 查看

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

实现:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐