获取IE缓存中的文件(验证码图片)
请教一个问题:
用windows API: FindFirstUrlCacheEntry、FindNextUrlCacheEntry 读取IE缓存,在IE缓存中获取不到网页的验证码图片文件, 我用httpwatch能抓取到验证码图片的URL。
不知道是什么原因获取不到验证码图片? 请大牛帮忙指点如何解决获取不到验证码图片的问题!
或者说图片文件是以其他方式读取的?
代码如下:
用windows API: FindFirstUrlCacheEntry、FindNextUrlCacheEntry 读取IE缓存,在IE缓存中获取不到网页的验证码图片文件, 我用httpwatch能抓取到验证码图片的URL。
不知道是什么原因获取不到验证码图片? 请大牛帮忙指点如何解决获取不到验证码图片的问题!
或者说图片文件是以其他方式读取的?
代码如下:
HANDLE hCacheEnumHandle = NULL;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
DWORD dwTrySize = 0; //initial buffer size
DWORD dwEntrySize= 8192; //initial buffer size
// Delete index.dat if requested.
// Be sure that index.dat is not locked.
// Enable initial buffer size for cache entry structure.
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
dwTrySize = dwEntrySize;
// URL search pattern (1st parameter)
// options are: NULL ("*.*"), "cookie:"
// or "visited:".
hCacheEnumHandle = FindFirstUrlCacheEntry(NULL /* in */ ,
lpCacheEntry /* out */,
&dwTrySize /* in, out */);
// First, obtain handle to internet cache
// with FindFirstUrlCacheEntry
// for later use with FindNextUrlCacheEntry.
if (hCacheEnumHandle == NULL)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
hCacheEnumHandle = FindFirstUrlCacheEntry(NULL, lpCacheEntry , &dwTrySize);
}
else
{
goto ENDOF;
}
}
if (hCacheEnumHandle)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// goto ENDOF;
// }
}
// Next, use hCacheEnumHandle obtained
// from the previous step to delete
// subsequent items of cache.
while(TRUE)
{
// Notice that return values of FindNextUrlCacheEntry (BOOL) and
// FindFirstUrlCacheEntry (HANDLE) are different.
dwTrySize = dwEntrySize;
BOOL bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);
if (!bReturn)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);
}
else
{
break;
}
}
if (bReturn)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// break;
// }
}
} ;
ENDOF:
if (lpCacheEntry) delete [] lpCacheEntry;
if (hCacheEnumHandle) FindCloseUrlCache(hCacheEnumHandle);
...全文
相关推荐
javascript修改IMG标签的src问题
javascript修改IMG标签的SRC,在IE6下面图片修改正常,但在IE7和Firefox下面却不刷新,下面有个解决方法,大家可以参考下
IE8.0不能显示验证码解决方法
该资源为注册表文件,双击该文件添加到注册表中,可以解决IE8.0无法显示验证码问题。
软件——获取IE缓存文件,获取网页中的flash等视频文件 好用,免费
软件——获取IE缓存文件,获取网页中的flash等视频文件 好用,免费
浏览IE缓存图片,并保存图片浏览IE缓存图片,并保存图片
浏览IE缓存图片,并保存图片浏览IE缓存图片,并保存图片
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码的切换地址后面加一个随机的参数 例如: 代码如下: [removed] //换验证码 function changeimg(){ /* math.random范围是0-1 *999变成0-999 +3000 就是3000-3999 */ var time=Math.round(Math.random()*999)+3000; $(‘#captcha’).attr(‘src’,’__APP__/Pu


网络编程
