做一个定时自动更改本机IP然后再去刷新两个网页的问题

黑兵 2007-09-13 12:41:44
如题。
100分相送。
换句话说,就是刷新网页点击率的。不同的是,两个网页二级的。
...全文
620 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinaterry 2007-09-27
  • 打赏
  • 举报
回复
...
洋溢2016 2007-09-27
  • 打赏
  • 举报
回复
o
dingroot 2007-09-27
  • 打赏
  • 举报
回复
mark
ilovechao1314 2007-09-27
  • 打赏
  • 举报
回复
mark
laowang2 2007-09-25
  • 打赏
  • 举报
回复
mark
sczyq 2007-09-25
  • 打赏
  • 举报
回复
如 ADSL 的连接名是 "ADSL001",

连接: SetRasDialState("ADSL001", true)
断开: SetRasDialState("ADSL001", false)


//---------------------------------------------------------------------------
void __fastcall TForm1::SetRasDialState(AnsiString EntryName, bool IsDial)
{
DWORD dwSize = sizeof(RASCONN);
LPRASCONN lpRasCon = (LPRASCONN)malloc(dwSize);
RASCONNSTATUS status;
HRASCONN hRasConn = NULL;
DWORD lpcon;
LPRASDIALPARAMS lpRasDialParams = new RASDIALPARAMS;
SetDialParams(EntryName, lpRasDialParams);
lpRasCon->dwSize = dwSize;
dwSize *= 256;
try
{
DWORD ret = 1;
while (ret && lpRasCon->dwSize > RAS_MaxEntryName)
{
ret = RasEnumConnections(lpRasCon, &dwSize, &lpcon);
if (ret)
lpRasCon->dwSize --;
}

if (!ret)
for (DWORD i = 0; i<lpcon; i++)
if (AnsiString(lpRasCon[i].szEntryName) == EntryName)
{
status.dwSize = sizeof(RASCONNSTATUS);
RasGetConnectStatus(lpRasCon->hrasconn, &status);
if (status.rasconnstate == 0x2000)
{
hRasConn = lpRasCon->hrasconn;
}
break;
}
}
catch (...) {}
free(lpRasCon);

try
{
if (hRasConn && !IsDial)
{
RasHangUp(hRasConn);
Sleep(50);
}
else if (IsDial && !hRasConn)
{
LPRASDIALPARAMS lpRasDialParams = new RASDIALPARAMS;
SetDialParams(EntryName, lpRasDialParams);
RasDial(NULL,NULL,lpRasDialParams,0L,(RASDIALFUNC)RasDialFunc,&hRasConn);
Sleep(50);
}
}
catch (...) {}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SetDialParams(AnsiString EntryName,
LPRASDIALPARAMS lpRasDialParams)
{
DWORD cb, nRet, cEntries;
BOOL b;
char szPhoneBook1[512], szPhoneBook2[512], szUserName[128], szDomainName[128];
unsigned char private_data[0x500];
int data_len;
DWORD dwSize, dwDialParamsUID, dwTmp;
PSID pSid = NULL;
SID_NAME_USE peUse;

LSA_OBJECT_ATTRIBUTES lsa_object_attr;
LSA_HANDLE lsa_handle;
PLSA_UNICODE_STRING plsa_private_data;
LSA_UNICODE_STRING lsa_keyname;
NTSTATUS status;
int ret;
WCHAR *sid;

dwSize = sizeof(szUserName);
GetUserName(szUserName, &dwSize);
dwSize = 0;
dwTmp = sizeof(szDomainName);
LookupAccountName(NULL, szUserName, pSid, &dwSize, szDomainName, &dwTmp, &peUse);
if(!dwSize) return;
pSid = (PSID)malloc(dwSize);
LookupAccountName(NULL, szUserName, pSid, &dwSize, szDomainName, &dwTmp, &peUse);
ConvertSidToStringSidW(pSid, &sid);

memset(&lsa_object_attr, 0, sizeof(lsa_object_attr));
lsa_object_attr.Length = sizeof(LSA_OBJECT_ATTRIBUTES);
LsaOpenPolicy(0, &lsa_object_attr, 0x800, &lsa_handle);

plsa_private_data = (PLSA_UNICODE_STRING)malloc(sizeof(LSA_UNICODE_STRING));
plsa_private_data->Length = 0x500;
plsa_private_data->MaximumLength = 0x500;
plsa_private_data->Buffer = (PWSTR)malloc(0x500);

lsa_keyname.MaximumLength = 0x200;
lsa_keyname.Buffer = (PWSTR)malloc(0x200);
wcscpy(lsa_keyname.Buffer, L"RasDialParams!");
wcscat(lsa_keyname.Buffer, sid);
wcscat(lsa_keyname.Buffer, L"#0");
lsa_keyname.Length = wcslen(lsa_keyname.Buffer) * 2;

status = LsaRetrievePrivateData(lsa_handle,
&lsa_keyname,
&plsa_private_data);
LsaClose(lsa_handle);
if(status != 0) return;
ret = WideCharToMultiByte(0, 0, plsa_private_data->Buffer,
plsa_private_data->Length,
private_data, sizeof(private_data), 0, 0);
if(ret == 0) return;
data_len = ret;

GetEnvironmentVariable("ALLUSERSPROFILE", szPhoneBook1, sizeof(szPhoneBook1)-200);
GetEnvironmentVariable("USERPROFILE", szPhoneBook2, sizeof(szPhoneBook2)-200);
strcat(szPhoneBook1, "\\Application Data\\Microsoft\\Network\\Connections\\pbk\\rasphone.pbk");
strcat(szPhoneBook2, "\\Application Data\\Microsoft\\Network\\Connections\\pbk\\rasphone.pbk");

strcpy(lpRasDialParams->szEntryName, EntryName.c_str());
lpRasDialParams->dwSize = sizeof(RASDIALPARAMS);

RasGetEntryDialParams(0, lpRasDialParams, &b);

dwDialParamsUID = GetPrivateProfileInt(EntryName.c_str(),
"DialParamsUID", 0, szPhoneBook1);
if(dwDialParamsUID == 0)
{
dwDialParamsUID = GetPrivateProfileInt(EntryName.c_str(),
"DialParamsUID", 0, szPhoneBook2);
if(dwDialParamsUID == 0)
return;
}


char *p, szDialParamsUID[52], *pass=NULL;

_snprintf(szDialParamsUID, sizeof(szDialParamsUID), "%d", dwDialParamsUID);

p = private_data;

for(int i=0;i<data_len;i++)
if(strcmp(&p[i], szDialParamsUID) == 0 )
{
for(int j=i;j<data_len;j++)
if(strcmp(&p[j], lpRasDialParams->szUserName) == 0 )
{
pass = p + j + strlen(lpRasDialParams->szUserName) + 1;
break;
}
break;
}
strcpy(lpRasDialParams->szPassword, pass);
}
//---------------------------------------------------------------------------
sczyq 2007-09-25
  • 打赏
  • 举报
回复
还是在家里使用ADSL好些,
自动连接,读取,断开,周而复始,IP肯定不一样。
黑兵 2007-09-24
  • 打赏
  • 举报
回复
不行。我就是想用一个我们自己的程序解决这个问题。代理的刷新速度和网页的读取不匹配。
僵哥 2007-09-13
  • 打赏
  • 举报
回复
如果你是通过NAT访问外网的话,你本机IP的更换并不引起你的出口IP变更,如此你只能是徒劳。用楼上的办法可以在一定程度上解决楼主的问题。
fjye 2007-09-13
  • 打赏
  • 举报
回复
不用这么麻烦,用多代理软件,设定多个代理,隔多少时间换个代理
然后用按键精灵编了事件,每隔一定的时间打开ie输入网址访问就可以刷了

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧