winhttp抓Google搜索结果页源码,抓多了会被封ip,有没有什么办法解决?

时间:2021-03-31 17:00:01
做个小程序调用Google搜索,从下载到的搜索结果页网页源码中提取自己想要的东西. 但是抓多了会被封ip,有没什么解决办法?
1 我现在winhttp本身都是把user agent设成浏览器了, 但是Google本身即使你在真正浏览器里刷新得快点都会说你流量异常让你输入验证码.
2 能怎么弹出个验证码窗口然后能继续吗?但是winhttp好像跟ie 跟webbrowser据说也不共用cache之类.应该没用
3 实在没办法,有没有什么能不断变化ip的代理软件呢?
拜谢!

16 个解决方案

#1


人家google防的就是你这种高频率的操作,想要绕过去难度可想而知。

#2


引用 1 楼 bakw 的回复:
人家google防的就是你这种高频率的操作,想要绕过去难度可想而知。
在这里看到篇文章,我如果在winhttp里面的话,完整的要怎么写呢? 是全部设在header里面吗?我看它里面有个location, 我如果抓取地址是会变化的,不知道行不行?:http://hi.baidu.com/kpstfbahmmalqre/item/a7922f73018fbf295c178995
文字我copy一下:
绕GOOGLE防抓取搜索结果的方法
用蜘蛛去抓GOOGLE的搜索结果如果太频繁可能会被封,并转向到一个警告页,只有在警告页输入水印中数字才可以继续访问。以前想的是用COM调IE抽链接的方法应该不会触发GOOGLE的封禁,但实际上这个过程GOOGLE是给客户端设置一个session,蜘蛛被封后只要再带上这个session也不会再被封了。
HTTP/1.1 200 OK
Set-Cookie: GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.cn
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.google.cn/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
Date: Mon, 04 Jan 2010 10:10:59 GMT
Content-Type: text/html; charset=UTF-8
Server: GCS/1.0
X-XSS-Protection: 0
Expires: Mon, 04 Jan 2010 10:10:59 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
PS:暂时还不知道GOOGLE是靠什么机制分析非正常请求的,浏览器类型?COOKIE?请求频度?毕竟大型的应用要顾及各类用户,使用session防spam也是比较合适的了。

#3


winhttp是保留session和cookie的,只要你没把创建的winhttp释放掉,以前做身份验证的时候需要用到cookie,这个事情我留意过,所以按理说只要你用的是同一个winhttp对象,应该就不用担心这个。

#4


但cookie如果在本地被脚本改动过,那就要费劲查查了。

#5


我照他说的写,如下:完全不行.不知道是不是我写错了?

 Set xml = New WinHttpRequest
xml.SetRequestHeader "HTTP/1.1 200 OK"
xml.SetRequestHeader "Set-Cookie", "GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.com"
xml.SetRequestHeader "cache -Control", "no -store, no - cache, must - revalidate, post - check = 0, pre - check = 0"
xml.SetRequestHeader "Pragma", "no -cache"
xml.SetRequestHeader "Location", "http://www.google.com/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq="
xml.SetRequestHeader "Date", "Mon, 04 Jan 2010 10:10:59 GMT"
xml.SetRequestHeader "Content-Type", "text/html; charset=UTF-8"
xml.SetRequestHeader "Server", "GCS/1.0"
xml.SetRequestHeader "X-XSS-Protection", "0"
xml.SetRequestHeader "Expires", "Mon, 04 Jan 2010 10:10:59 GMT"
xml.SetRequestHeader "content -encoding", "gzip"
xml.SetRequestHeader "Transfer -encoding", "chunked"

#6


加了这行也不行:
xml.SetRequestHeader "Connection", "Keep-Alive"
大侠们要怎么写呢?菜鸟完全不会....谢嘞..

#7


引用 4 楼 bakw 的回复:
但cookie如果在本地被脚本改动过,那就要费劲查查了。
"把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?我没有加这个的.
不知道了.但是我的搜索地址是不断变动的,比如这次搜"123",下次会搜"576",不知道这个有没影响?

#8


你照他的写没用,这是服务器返回给你的内容

""把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?"
是的,没有nothing掉,重复用的话cookie内容就还在的。

#9


引用 8 楼 bakw 的回复:
你照他的写没用,这是服务器返回给你的内容

""把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?"
是的,没有nothing掉,重复用的话cookie内容就还在的。
1 我是没有nothing掉的.这样的话,如果确实"winhttp是保留session和cookie的",那按理说本身cookie和session就一直都在. 那也就是说我完全没有必要像上面百度里面那位大侠一样自己设置一遍? 可是我现在Google是一直会抓个100条左右就封我ip的.
2 大侠意思如果我要写,那也应该是自己抓包抓到我自己这里得到的session数据是吗?
多谢!!

#10


我QQ1085992075,,我写过这种多线程采集工具,每个线程一个IP,100线程,相当于100个电脑同时在下载采集,IP各不同,可以自动每线程换IP

winhttp抓Google搜索结果页源码,抓多了会被封ip,有没有什么办法解决?

#11


你要写的话也应该是从你浏览器发出的数据包才对,session的话是存在服务器上的,服务器给你的只是个session的id号而已,只有cookie是存在你客户机上的。封ip估计和你使用的频率什么有关吧。短时间内上百次的搜索正常想想也会觉得有问题,你说呢?

#12


引用 11 楼 bakw 的回复:
你要写的话也应该是从你浏览器发出的数据包才对,session的话是存在服务器上的,服务器给你的只是个session的id号而已,只有cookie是存在你客户机上的。封ip估计和你使用的频率什么有关吧。短时间内上百次的搜索正常想想也会觉得有问题,你说呢?
我二楼说的那个牛人他的意思就是不论多少频率都不会封ip.具体我这里可能就是没实现他那个方法.他文章地址: http://hi.baidu.com/kpstfbahmmalqre/item/a7922f73018fbf295c178995

完整文章就是这样:

绕GOOGLE防抓取搜索结果的方法
用蜘蛛去抓GOOGLE的搜索结果如果太频繁可能会被封,并转向到一个警告页,只有在警告页输入水印中数字才可以继续访问。以前想的是用COM调IE抽链接的方法应该不会触发GOOGLE的封禁,但实际上这个过程GOOGLE是给客户端设置一个session,蜘蛛被封后只要再带上这个session也不会再被封了。
HTTP/1.1 200 OK
Set-Cookie: GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.cn
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.google.cn/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
Date: Mon, 04 Jan 2010 10:10:59 GMT
Content-Type: text/html; charset=UTF-8
Server: GCS/1.0
X-XSS-Protection: 0
Expires: Mon, 04 Jan 2010 10:10:59 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
PS:暂时还不知道GOOGLE是靠什么机制分析非正常请求的,浏览器类型?COOKIE?请求频度?毕竟大型的应用要顾及各类用户,使用session防spam也是比较合适的了。

#13


这是抓www.google.com.hk的记录,你也可以用winhttp.GetAllResponseHeaders 读到google返回的http头
这个PREF=ID=dbb9f3cb2f656120可能就是session的id吧,和原来文章中的不一样了,而且原来文章中访问的google是 www.google.cn的站点。
要不你加个Referer试试,骗骗google说你从他首页搜索来的。
winhttp.SetRequestHeader "Referer", "http://www.google.com.hk/"

Date: Fri, 30 Aug 2013 02:48:00 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Big5
Set-Cookie: PREF=ID=dbb9f3cb2f656120:FF=0:NW=1:TM=1377830880:LM=1377830880:S=8SHip4KFY4sE9XjI; expires=Sun, 30-Aug-2015 02:48:00 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=mUOafuSXXDaXFeRNuWDAm9mFk9rTBV0enaZyvRNjc7T1AbYLdPBATwE9ikJivcgQTivXt9_DFiO3jLnLuTZyVrCgll-zw-UkkgKerBDisSR0W8F_hUtr_6PC2S1l1jGn; expires=Sat, 01-Mar-2014 02:48:00 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked

#14


引用 13 楼 bakw 的回复:
这是抓www.google.com.hk的记录,你也可以用winhttp.GetAllResponseHeaders 读到google返回的http头
这个PREF=ID=dbb9f3cb2f656120可能就是session的id吧,和原来文章中的不一样了,而且原来文章中访问的google是 www.google.cn的站点。
要不你加个Referer试试,骗骗google说你从他首页搜索来的。
winhttp.SetRequestHeader "Referer", "http://www.google.com.hk/"

Date: Fri, 30 Aug 2013 02:48:00 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Big5
Set-Cookie: PREF=ID=dbb9f3cb2f656120:FF=0:NW=1:TM=1377830880:LM=1377830880:S=8SHip4KFY4sE9XjI; expires=Sun, 30-Aug-2015 02:48:00 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=mUOafuSXXDaXFeRNuWDAm9mFk9rTBV0enaZyvRNjc7T1AbYLdPBATwE9ikJivcgQTivXt9_DFiO3jLnLuTZyVrCgll-zw-UkkgKerBDisSR0W8F_hUtr_6PC2S1l1jGn; expires=Sat, 01-Mar-2014 02:48:00 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked

大侠,试过了都不行.我用您的方法winhttp.GetAllResponseHeaders 这里自己抓的headers.
代码如下面.而且情况是:如果加上"xml.SetRequestHeader "Transfer-Encoding", "chunked""这句,程序就会完全空转,什么都不抓. 加上这句则仍报封ip . 光是加那句Referer的话也不行.

 Set xml = New WinHttpRequest
xml.SetRequestHeader "Cache-Control", "private, max-age=0"
xml.SetRequestHeader "Date", "Fri, 30 Aug 2013 09:37:23 GMT"
'xml.SetRequestHeader "Transfer-Encoding", "chunked"
xml.SetRequestHeader "Content-Type", "text/html; charset=UTF-8"
xml.SetRequestHeader "Expires", "-1"
xml.SetRequestHeader "Server", "gws"
xml.SetRequestHeader "Set-Cookie", "PREF=ID=be8e7648acb8a2e0:U=f1d5541ac8bc9740:FF=2:LD=zh-CN:NW=1:TM=1377855443:LM=1377855443:S=a0DsACelQT3W90gS; expires=Sun, 30-Aug-2015 09:37:23 GMT; path=/; domain=.google.com.hk"
xml.SetRequestHeader "X-XSS-Protection", "1; mode=block"
xml.SetRequestHeader "X-Frame-Options", "SAMEORIGIN"
xml.SetRequestHeader "Alternate-Protocol", "80:quic"

#15


兄弟,误会了~~
您提交的数据有问题
上边我显示的那组内容是给您看的,不是把这些数据交给服务器用的,那些是服务器反给你的内容。
代码完全不是那样写的

提交代码不需要那么多 SetRequestHeader 程序里加那么多,看一眼就知道有问题了。

'能写成这样子就已经算完整了
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send

我觉得您该先找些抓包的软件,抓些http往来的通讯数据看一下,看看浏览器给服务器发的是什么样的数据,服务器回给浏览器是什么样的数据
Set-Cookie这种头是服务器在告诉浏览器,叫它把这些cookie数据存在他这边,浏览器下次向服务器提交的时候用的头是cookie,而不是set-cookie,只是举个例子,另外还有很多,像Expires头,用来告诉浏览器过期的时间用的,超过多少时间之后,浏览器就该把cookie丢掉了。所以您该明白,这些内容不是加进代码用的。

#16


引用 15 楼 bakw 的回复:
兄弟,误会了~~
您提交的数据有问题
上边我显示的那组内容是给您看的,不是把这些数据交给服务器用的,那些是服务器反给你的内容。
代码完全不是那样写的

提交代码不需要那么多 SetRequestHeader 程序里加那么多,看一眼就知道有问题了。

'能写成这样子就已经算完整了
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send

我觉得您该先找些抓包的软件,抓些http往来的通讯数据看一下,看看浏览器给服务器发的是什么样的数据,服务器回给浏览器是什么样的数据
Set-Cookie这种头是服务器在告诉浏览器,叫它把这些cookie数据存在他这边,浏览器下次向服务器提交的时候用的头是cookie,而不是set-cookie,只是举个例子,另外还有很多,像Expires头,用来告诉浏览器过期的时间用的,超过多少时间之后,浏览器就该把cookie丢掉了。所以您该明白,这些内容不是加进代码用的。
多谢!单独用下面这句我之前也是过的,不行.估计是因为Google没那么好骗^_^.
其它抓包什么的都不懂了~ 太复杂了,还不知道能不能骗过Google....我要么还是算了...太菜...老老实实去多找几个代理...体力活...
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send

#1


人家google防的就是你这种高频率的操作,想要绕过去难度可想而知。

#2


引用 1 楼 bakw 的回复:
人家google防的就是你这种高频率的操作,想要绕过去难度可想而知。
在这里看到篇文章,我如果在winhttp里面的话,完整的要怎么写呢? 是全部设在header里面吗?我看它里面有个location, 我如果抓取地址是会变化的,不知道行不行?:http://hi.baidu.com/kpstfbahmmalqre/item/a7922f73018fbf295c178995
文字我copy一下:
绕GOOGLE防抓取搜索结果的方法
用蜘蛛去抓GOOGLE的搜索结果如果太频繁可能会被封,并转向到一个警告页,只有在警告页输入水印中数字才可以继续访问。以前想的是用COM调IE抽链接的方法应该不会触发GOOGLE的封禁,但实际上这个过程GOOGLE是给客户端设置一个session,蜘蛛被封后只要再带上这个session也不会再被封了。
HTTP/1.1 200 OK
Set-Cookie: GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.cn
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.google.cn/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
Date: Mon, 04 Jan 2010 10:10:59 GMT
Content-Type: text/html; charset=UTF-8
Server: GCS/1.0
X-XSS-Protection: 0
Expires: Mon, 04 Jan 2010 10:10:59 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
PS:暂时还不知道GOOGLE是靠什么机制分析非正常请求的,浏览器类型?COOKIE?请求频度?毕竟大型的应用要顾及各类用户,使用session防spam也是比较合适的了。

#3


winhttp是保留session和cookie的,只要你没把创建的winhttp释放掉,以前做身份验证的时候需要用到cookie,这个事情我留意过,所以按理说只要你用的是同一个winhttp对象,应该就不用担心这个。

#4


但cookie如果在本地被脚本改动过,那就要费劲查查了。

#5


我照他说的写,如下:完全不行.不知道是不是我写错了?

 Set xml = New WinHttpRequest
xml.SetRequestHeader "HTTP/1.1 200 OK"
xml.SetRequestHeader "Set-Cookie", "GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.com"
xml.SetRequestHeader "cache -Control", "no -store, no - cache, must - revalidate, post - check = 0, pre - check = 0"
xml.SetRequestHeader "Pragma", "no -cache"
xml.SetRequestHeader "Location", "http://www.google.com/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq="
xml.SetRequestHeader "Date", "Mon, 04 Jan 2010 10:10:59 GMT"
xml.SetRequestHeader "Content-Type", "text/html; charset=UTF-8"
xml.SetRequestHeader "Server", "GCS/1.0"
xml.SetRequestHeader "X-XSS-Protection", "0"
xml.SetRequestHeader "Expires", "Mon, 04 Jan 2010 10:10:59 GMT"
xml.SetRequestHeader "content -encoding", "gzip"
xml.SetRequestHeader "Transfer -encoding", "chunked"

#6


加了这行也不行:
xml.SetRequestHeader "Connection", "Keep-Alive"
大侠们要怎么写呢?菜鸟完全不会....谢嘞..

#7


引用 4 楼 bakw 的回复:
但cookie如果在本地被脚本改动过,那就要费劲查查了。
"把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?我没有加这个的.
不知道了.但是我的搜索地址是不断变动的,比如这次搜"123",下次会搜"576",不知道这个有没影响?

#8


你照他的写没用,这是服务器返回给你的内容

""把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?"
是的,没有nothing掉,重复用的话cookie内容就还在的。

#9


引用 8 楼 bakw 的回复:
你照他的写没用,这是服务器返回给你的内容

""把创建的winhttp释放掉"是什么呢?是不是就是winhttp=nothing这样算呢?"
是的,没有nothing掉,重复用的话cookie内容就还在的。
1 我是没有nothing掉的.这样的话,如果确实"winhttp是保留session和cookie的",那按理说本身cookie和session就一直都在. 那也就是说我完全没有必要像上面百度里面那位大侠一样自己设置一遍? 可是我现在Google是一直会抓个100条左右就封我ip的.
2 大侠意思如果我要写,那也应该是自己抓包抓到我自己这里得到的session数据是吗?
多谢!!

#10


我QQ1085992075,,我写过这种多线程采集工具,每个线程一个IP,100线程,相当于100个电脑同时在下载采集,IP各不同,可以自动每线程换IP

winhttp抓Google搜索结果页源码,抓多了会被封ip,有没有什么办法解决?

#11


你要写的话也应该是从你浏览器发出的数据包才对,session的话是存在服务器上的,服务器给你的只是个session的id号而已,只有cookie是存在你客户机上的。封ip估计和你使用的频率什么有关吧。短时间内上百次的搜索正常想想也会觉得有问题,你说呢?

#12


引用 11 楼 bakw 的回复:
你要写的话也应该是从你浏览器发出的数据包才对,session的话是存在服务器上的,服务器给你的只是个session的id号而已,只有cookie是存在你客户机上的。封ip估计和你使用的频率什么有关吧。短时间内上百次的搜索正常想想也会觉得有问题,你说呢?
我二楼说的那个牛人他的意思就是不论多少频率都不会封ip.具体我这里可能就是没实现他那个方法.他文章地址: http://hi.baidu.com/kpstfbahmmalqre/item/a7922f73018fbf295c178995

完整文章就是这样:

绕GOOGLE防抓取搜索结果的方法
用蜘蛛去抓GOOGLE的搜索结果如果太频繁可能会被封,并转向到一个警告页,只有在警告页输入水印中数字才可以继续访问。以前想的是用COM调IE抽链接的方法应该不会触发GOOGLE的封禁,但实际上这个过程GOOGLE是给客户端设置一个session,蜘蛛被封后只要再带上这个session也不会再被封了。
HTTP/1.1 200 OK
Set-Cookie: GDSESS=ID=6ac6ad6014e083ee:EX=1262610659:S=fCqSb-MuRgE2WB9x; path=/; domain=google.cn
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.google.cn/search?hl=zh-CN&source=hp&q=xss&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
Date: Mon, 04 Jan 2010 10:10:59 GMT
Content-Type: text/html; charset=UTF-8
Server: GCS/1.0
X-XSS-Protection: 0
Expires: Mon, 04 Jan 2010 10:10:59 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
PS:暂时还不知道GOOGLE是靠什么机制分析非正常请求的,浏览器类型?COOKIE?请求频度?毕竟大型的应用要顾及各类用户,使用session防spam也是比较合适的了。

#13


这是抓www.google.com.hk的记录,你也可以用winhttp.GetAllResponseHeaders 读到google返回的http头
这个PREF=ID=dbb9f3cb2f656120可能就是session的id吧,和原来文章中的不一样了,而且原来文章中访问的google是 www.google.cn的站点。
要不你加个Referer试试,骗骗google说你从他首页搜索来的。
winhttp.SetRequestHeader "Referer", "http://www.google.com.hk/"

Date: Fri, 30 Aug 2013 02:48:00 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Big5
Set-Cookie: PREF=ID=dbb9f3cb2f656120:FF=0:NW=1:TM=1377830880:LM=1377830880:S=8SHip4KFY4sE9XjI; expires=Sun, 30-Aug-2015 02:48:00 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=mUOafuSXXDaXFeRNuWDAm9mFk9rTBV0enaZyvRNjc7T1AbYLdPBATwE9ikJivcgQTivXt9_DFiO3jLnLuTZyVrCgll-zw-UkkgKerBDisSR0W8F_hUtr_6PC2S1l1jGn; expires=Sat, 01-Mar-2014 02:48:00 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked

#14


引用 13 楼 bakw 的回复:
这是抓www.google.com.hk的记录,你也可以用winhttp.GetAllResponseHeaders 读到google返回的http头
这个PREF=ID=dbb9f3cb2f656120可能就是session的id吧,和原来文章中的不一样了,而且原来文章中访问的google是 www.google.cn的站点。
要不你加个Referer试试,骗骗google说你从他首页搜索来的。
winhttp.SetRequestHeader "Referer", "http://www.google.com.hk/"

Date: Fri, 30 Aug 2013 02:48:00 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Big5
Set-Cookie: PREF=ID=dbb9f3cb2f656120:FF=0:NW=1:TM=1377830880:LM=1377830880:S=8SHip4KFY4sE9XjI; expires=Sun, 30-Aug-2015 02:48:00 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=mUOafuSXXDaXFeRNuWDAm9mFk9rTBV0enaZyvRNjc7T1AbYLdPBATwE9ikJivcgQTivXt9_DFiO3jLnLuTZyVrCgll-zw-UkkgKerBDisSR0W8F_hUtr_6PC2S1l1jGn; expires=Sat, 01-Mar-2014 02:48:00 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked

大侠,试过了都不行.我用您的方法winhttp.GetAllResponseHeaders 这里自己抓的headers.
代码如下面.而且情况是:如果加上"xml.SetRequestHeader "Transfer-Encoding", "chunked""这句,程序就会完全空转,什么都不抓. 加上这句则仍报封ip . 光是加那句Referer的话也不行.

 Set xml = New WinHttpRequest
xml.SetRequestHeader "Cache-Control", "private, max-age=0"
xml.SetRequestHeader "Date", "Fri, 30 Aug 2013 09:37:23 GMT"
'xml.SetRequestHeader "Transfer-Encoding", "chunked"
xml.SetRequestHeader "Content-Type", "text/html; charset=UTF-8"
xml.SetRequestHeader "Expires", "-1"
xml.SetRequestHeader "Server", "gws"
xml.SetRequestHeader "Set-Cookie", "PREF=ID=be8e7648acb8a2e0:U=f1d5541ac8bc9740:FF=2:LD=zh-CN:NW=1:TM=1377855443:LM=1377855443:S=a0DsACelQT3W90gS; expires=Sun, 30-Aug-2015 09:37:23 GMT; path=/; domain=.google.com.hk"
xml.SetRequestHeader "X-XSS-Protection", "1; mode=block"
xml.SetRequestHeader "X-Frame-Options", "SAMEORIGIN"
xml.SetRequestHeader "Alternate-Protocol", "80:quic"

#15


兄弟,误会了~~
您提交的数据有问题
上边我显示的那组内容是给您看的,不是把这些数据交给服务器用的,那些是服务器反给你的内容。
代码完全不是那样写的

提交代码不需要那么多 SetRequestHeader 程序里加那么多,看一眼就知道有问题了。

'能写成这样子就已经算完整了
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send

我觉得您该先找些抓包的软件,抓些http往来的通讯数据看一下,看看浏览器给服务器发的是什么样的数据,服务器回给浏览器是什么样的数据
Set-Cookie这种头是服务器在告诉浏览器,叫它把这些cookie数据存在他这边,浏览器下次向服务器提交的时候用的头是cookie,而不是set-cookie,只是举个例子,另外还有很多,像Expires头,用来告诉浏览器过期的时间用的,超过多少时间之后,浏览器就该把cookie丢掉了。所以您该明白,这些内容不是加进代码用的。

#16


引用 15 楼 bakw 的回复:
兄弟,误会了~~
您提交的数据有问题
上边我显示的那组内容是给您看的,不是把这些数据交给服务器用的,那些是服务器反给你的内容。
代码完全不是那样写的

提交代码不需要那么多 SetRequestHeader 程序里加那么多,看一眼就知道有问题了。

'能写成这样子就已经算完整了
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send

我觉得您该先找些抓包的软件,抓些http往来的通讯数据看一下,看看浏览器给服务器发的是什么样的数据,服务器回给浏览器是什么样的数据
Set-Cookie这种头是服务器在告诉浏览器,叫它把这些cookie数据存在他这边,浏览器下次向服务器提交的时候用的头是cookie,而不是set-cookie,只是举个例子,另外还有很多,像Expires头,用来告诉浏览器过期的时间用的,超过多少时间之后,浏览器就该把cookie丢掉了。所以您该明白,这些内容不是加进代码用的。
多谢!单独用下面这句我之前也是过的,不行.估计是因为Google没那么好骗^_^.
其它抓包什么的都不懂了~ 太复杂了,还不知道能不能骗过Google....我要么还是算了...太菜...老老实实去多找几个代理...体力活...
set xml=new winhttprequest
xml.open "GET","http://www.google.com.hk/#newwindow=1&q=vb&safe=strict"
xml.SetRequestHeader "Referer", "http://www.google.com.hk/"
xml.send