设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 393|回复: 2
打印 上一主题 下一主题

能不能从底层拦截一个将要显示的网页呢

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-6 01:50:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
能不能从底层拦截一个将要显示的网页呢,比如说www.163.com.就是先不让它显示出来,
我想在后台处理它的一些数据,然后在将它显示出来
可以这样做吗,
拦截WIN32程序是可以这样做的,但是网页还不太清楚,
请大家指点一下
2#
发表于 2009-11-6 01:50:11 | 只看该作者
下面就是对www.163.com发送GET请求后接受的数据写入163com.html的简单程序

程序代码:
#include <WinSock2.h>
#include <fstream>
#pragma comment(lib,"Ws2_32.lib")
void main()
{
WORD version=MAKEWORD(1,1);
WSADATA wsaData;

int err=WSAStartup(version,&wsaData);
if ( err != 0 ) {
return;
}


if (LOBYTE(wsaData.wVersion)!=1
|| HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}

SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN sockadrr;

char *host_server="www.163.com";
hostent *pHost=gethostbyname(host_server);

LPCSTR psz=inet_ntoa (*(in_addr*)pHost->h_addr_list[0]);
sockadrr.sin_addr.S_un.S_addr=inet_addr(psz);
sockadrr.sin_family=AF_INET;
sockadrr.sin_port=htons(80);

char *Command="GET /index.html HTTP/1.1 \r\nHost: www.163.com\r\nAccept: jsp/php/asp/css/image/gif \r\n\r\n";
int len=sizeof(SOCKADDR);

connect(sock,(SOCKADDR*)&sockadrr,len);

send(sock,Command,strlen(Command)+1,MSG_DONTROUTE|MSG_OOB);

int wsaerr1=WSAGetLastError();
std::cout<<wsaerr1<<std::endl;

std::ofstream ous("D:\\163com.html",std::ios::binary);
char buf[4096];

memset(buf,0,4096);

while(recv(sock,buf,4096,0)>0)
{
if(strlen(buf)<4096)buf[strlen(buf)]=0;
ous<<buf;
}
ous.close();
int wsaerr=WSAGetLastError();
std::cout<<wsaerr<<std::endl;
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-6 01:50:13 | 只看该作者
非常感谢,我下载回去好好研究了,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 16:38 , Processed in 0.102114 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表