tubaba 发表于 2017-7-30 13:53:17

WinHttp.WinHttpRequest.5.1取网页内容的问题

$url = 'http://www.bokon.net/novel-7/1128308/12517520.html'
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Option(4) = 13056 ;忽略错误标志
$oHTTP.Option(6) = True ;是否接收重定向地址信息
$oHTTP.SetTimeouts(30000, 30000, 30000, 30000)
$oHTTP.Open('GET', $url, True)
$oHTTP.Send()
$oHTTP.WaitForResponse()
$Respond = BinaryToString($oHTTP.ResponseBody, 1)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Respond = ' & $Respond & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

取回来的内容是:<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head>
<font size="+2" color="#FF0000">内容正在载入……<br>如果超过5秒没显示,请刷新一次即可<br></font>
<script language="javascript">var c2="07ff9340a8d005fe";</script>
<script type="text/javascript" src="/nnxswnn/12517520.js"></script>跟想要的结果不符,分析了一下网页.我猜是执行了js代码访问另一个地址后再返回正确的结果.
不知各位同学有什么办法能取到小说正文 ??

zghwelcome 发表于 2017-7-30 13:53:18

带上cookie$oHTTP.setRequestHeader("Cookie","qnzbcnmcb=d3926354934239dd; kndsjsmm=2017%2F7%2F30+18%3A43%3A36; ASPSESSIONIDCACDSQQR=NOOADNMBFBFGHBOKCJDCEIHJ; nxgmnmry=900bdfe00d309682")

py_hgx 发表于 2017-7-31 11:32:51

这个在最近需要开发一个东西取得网页的更新值。

tubaba 发表于 2017-7-31 12:35:57

本帖最后由 tubaba 于 2017-7-31 12:37 编辑

回复 2# zghwelcome

"qnzbcnmcb=d3926354934239dd; kndsjsmm=2017%2F7%2F30+18%3A43%3A36; ASPSESSIONIDCACDSQQR=NOOADNMBFBFGHBOKCJDCEIHJ; 是第一次访问该网页时,返回的header中包含的.
后面的 nxgmnmry=900bdfe00d309682是不是通过/nnxswnn/12517520.js得到的?

diandiand163 发表于 2017-8-1 17:39:54

#coding:utf-8
from lxml import etree
import requests
from bs4 import BeautifulSoup
url = 'http://www.bokon.net/novel-7/1128308/12517520.html'
response = requests.get(url)
response.encoding = 'gbk'
html = response.text
root = etree.HTML(html)

result = root.xpath("//title/text()")
for node in result:
        f = open("d:/1.txt","a",encoding='utf-8')
        f.write(node+"\n")
        print (node)
        f.close()
#print (result)

yamakawa 发表于 2017-8-1 18:21:24

也是醉了。为嘛总是有人喜欢在au3的论坛贴其他语言。。。

zghwelcome 发表于 2017-8-1 18:57:07

回复 4# tubaba


    看上去是的,我对JS也不了解

diandiand163 发表于 2017-8-2 10:43:44

搞定了????

diandiand163 发表于 2017-8-2 10:44:06

用COOKIE 不行吧。

xz00311 发表于 2017-8-2 13:26:07

能把能把解决的代码贴上来给我后面的人啊

tubaba 发表于 2017-8-2 15:28:10

没有代码啊?上面不就是答案吗?.带上cookie
至于如何得到这个cookie,运行JS的后果,但这个JS,说老实话我不会用.

大致流程是这样,访问http://www.bokon.net/novel-7/1128308/12705238.html,
返回
<script language="javascript">var c2="1f81d5f9075e26ca";</script>
<script type="text/javascript" src="/nnxswnn/12705238.js"></script>

这是12705238.jseval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d=k||e(c)}k=}];e=function(){return'\\w+'};c=1};while(c--){if(k){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k)}}return p}('f n=1o;1j{n=1i 1N();u(n.1x){n.1x("2l/2n")}}1k(1S){1j{n=1i 1B("1X.1z")}1k(28){1j{n=1i 1B("1U.1z")}1k(2e){n=1o}}}m 1D(K){m D(E,1l){g(E<<1l)|(E>>>(32-1l))}m e(1b,1c){f Y,1d,w,v,t;w=(1b&1s);v=(1c&1s);Y=(1b&1h);1d=(1c&1h);t=(1b&1E)+(1c&1E);u(Y&1d)g(t^1s^w^v);u(Y|1d){u(t&1h)g(t^2k^w^v);1C g(t^1h^w^v)}1C g(t^w^v)}m F(x,y,z){g(x&y)|((~x)&z)}m G(x,y,z){g(x&z)|(y&(~z))}m H(x,y,z){g(x^y^z)}m I(x,y,z){g(y^(x|(~z)))}m i(a,b,c,d,x,s,p){a=e(a,e(e(F(b,c,d),x),p));g e(D(a,s),b)}m j(a,b,c,d,x,s,p){a=e(a,e(e(G(b,c,d),x),p));g e(D(a,s),b)}m l(a,b,c,d,x,s,p){a=e(a,e(e(H(b,c,d),x),p));g e(D(a,s),b)}m h(a,b,c,d,x,s,p){a=e(a,e(e(I(b,c,d),x),p));g e(D(a,s),b)}m 1v(K){f r;f V=K.1m;f 1p=V+8;f 1G=(1p-(1p%1H))/1H;f 1a=(1G+1)*16;f q=1w(1a-1);f A=0;f o=0;2c(o<V){r=(o-(o%4))/4;A=(o%4)*8;q=(q|(K.2b(o)<<A));o++}r=(o-(o%4))/4;A=(o%4)*8;q=q|(2a<<A);q=V<<3;q=V>>>29;g q}m W(E){f X="",18="",1n,U;1A(U=0;U<=3;U++){1n=(E>>>(U*8))&27;18="0"+1n.1Z(16);X=X+18.24(18.1m-2,2)}g X}f x=1w();f k,1u,1t,1q,1r,a,b,c,d;f 1g=7,P=12,M=17,O=22;f N=5,L=9,1e=14,Q=20;f 1f=4,T=11,S=16,R=23;f J=6,B=10,Z=15,C=21;x=1v(K);a=25;b=26;c=2d;d=2m;1A(k=0;k<x.1m;k+=16){1u=a;1t=b;1q=c;1r=d;a=i(a,b,c,d,x,1g,1Y);d=i(d,a,b,c,x,P,2f);c=i(c,d,a,b,x,M,2g);b=i(b,c,d,a,x,O,2h);a=i(a,b,c,d,x,1g,2i);d=i(d,a,b,c,x,P,2o);c=i(c,d,a,b,x,M,1R);b=i(b,c,d,a,x,O,1P);a=i(a,b,c,d,x,1g,1O);d=i(d,a,b,c,x,P,1I);c=i(c,d,a,b,x,M,1J);b=i(b,c,d,a,x,O,1K);d=i(d,a,b,c,x,P,1T);c=i(c,d,a,b,x,M,1W);b=i(b,c,d,a,x,O,1V);a=j(a,b,c,d,x,N,1Q);d=j(d,a,b,c,x,L,1M);b=j(b,c,d,a,x,Q,1L);a=j(a,b,c,d,x,N,2j);d=j(d,a,b,c,x,L,2D);c=j(c,d,a,b,x,1e,35);b=j(b,c,d,a,x,Q,34);a=j(a,b,c,d,x,N,36);d=j(d,a,b,c,x,L,37);c=j(c,d,a,b,x,1e,39);b=j(b,c,d,a,x,Q,38);a=j(a,b,c,d,x,N,2p);d=j(d,a,b,c,x,L,31);c=j(c,d,a,b,x,1e,2W);b=j(b,c,d,a,x,Q,2V);a=l(a,b,c,d,x,1f,2U);d=l(d,a,b,c,x,T,2X);c=l(c,d,a,b,x,S,2Y);b=l(b,c,d,a,x,R,2Z);a=l(a,b,c,d,x,1f,3a);d=l(d,a,b,c,x,T,3c);c=l(c,d,a,b,x,S,3j);b=l(b,c,d,a,x,R,3m);a=l(a,b,c,d,x,1f,3l);d=l(d,a,b,c,x,T,3n);c=l(c,d,a,b,x,S,3k);b=l(b,c,d,a,x,R,3d);d=l(d,a,b,c,x,T,3i);c=l(c,d,a,b,x,S,3e);b=l(b,c,d,a,x,R,3f);a=h(a,b,c,d,x,J,3g);d=h(d,a,b,c,x,B,2S);b=h(b,c,d,a,x,C,2C);a=h(a,b,c,d,x,J,2x);d=h(d,a,b,c,x,B,2r);c=h(c,d,a,b,x,Z,2s);b=h(b,c,d,a,x,C,2v);a=h(a,b,c,d,x,J,2E);d=h(d,a,b,c,x,B,2O);c=h(c,d,a,b,x,Z,2P);b=h(b,c,d,a,x,C,2R);a=h(a,b,c,d,x,J,2M);d=h(d,a,b,c,x,B,2G);c=h(c,d,a,b,x,Z,2I);b=h(b,c,d,a,x,C,2J);a=e(a,1u);b=e(b,1t);c=e(c,1q);d=e(d,1r)}f 19=W(a)+W(b)+W(c)+W(d);19="/2K/"+19+"2H/";g 19.2F()}n.2L("2Q",1D(2N),1o);n.2u=1y;n.2t(2q);m 1y(){u(n.2w==4&&n.2B==2A){f 1F=n.2y.2T(",");u(1F=="2z"){30.3h.3b(33)}}}',62,210,'||||||||||||||AddUnsigned|var|return|II|FF|GG||HH|function|Ajax|lByteCount|ac|lWordArray|lWordCount||lResult|if|lY8|lX8||||lBytePosition|S42|S44|RotateLeft|lValue|||||S41|xxyyu|S22|S13|S21|S14|S12|S24|S34|S33|S32|lCount|lMessageLength|WordToHex|WordToHexValue|lX4|S43|||||||||WordToHexValue_temp|temp|lNumberOfWords|lX|lY|lY4|S23|S31|S11|0x40000000|new|try|catch|iShiftBits|length|lByte|false|lNumberOfWords_temp1|CC|DD|0x80000000|BB|AA|ConvertToWordArray|Array|overrideMimeType|xxyyu3|XMLHTTP|for|ActiveXObject|else|ajax|0x3FFFFFFF|response|lNumberOfWords_temp2|64|0x8B44F7AF|0xFFFF5BB1|0x895CD7BE|0xE9B6C7AA|0xC040B340|XMLHttpRequest|0x698098D8|0xFD469501|0xF61E2562|0xA8304613|trymicrosoft|0xFD987193|Microsoft|0x49B40821|0xA679438E|Msxml2|0xD76AA478|toString|||||substr|0x67452301|0xEFCDAB89|255|othermicrosoft||0x80|charCodeAt|while|0x98BADCFE|failed|0xE8C7B756|0x242070DB|0xC1BDCEEE|0xF57C0FAF|0xD62F105D|0xC0000000|text|0x10325476|xml|0x4787C62A|0xA9E3E905|null|0x8F0CCC92|0xFFEFF47D|send|onreadystatechange|0x85845DD1|readyState|0x655B59C3|responseText|ok|200|status|0xFC93A039|0x2441453|0x6FA87E4F|toLowerCase|0xBD3AF235|12705238|0x2AD7D2BB|0xEB86D391|8fa64cf70ef8d455|open|0xF7537E82|c2|0xFE2CE6E0|0xA3014314|GET|0x4E0811A1|0x432AFF97|split|0xFFFA3942|0x8D2A4C8A|0x676F02D9|0x8771F681|0x6D9D6122|0xFDE5380C|window|0xFCEFA3F8||true|0xE7D3FBC8|0xD8A1E681|0x21E1CDE6|0xC33707D6|0x455A14ED|0xF4D50D87|0xA4BEEA44|reload|0x4BDECFA9|0x4881D05|0x1FA27CF8|0xC4AC5665|0xF4292244|location|0xE6DB99E5|0xF6BB4B60|0xD4EF3085|0x289B7EC6|0xBEBFBC70|0xEAA127FA'.split('|'),0,{}))
运行JS之后,我猜得到的结果应该是/8fa64cf70ef8d455/3448c861cef227da25b203c08765312112705238/

然后跳转到http://www.bokon.net/8fa64cf70ef8d455/3448c861cef227da25b203c08765312112705238/
返回Set-Cookie        nxgmnmry=9d9c603e723d7f8a; path=/

把这个cookie附加到上面http://www.bokon.net/novel-7/1128308/12705238.html,就可以得到内容了

zghwelcome 发表于 2017-8-3 13:30:59

看了两小时JavaScript来解决这个问题,好像也没有想象中的难{:face (303):}
详情看附件,收费是因为缺金币,花的时间换点金币不为过,详细的代码注释应该物有所值.#include <array.au3>
;js在线格式化 http://tool.oschina.net/codeformat/js
Local $sNovelUrl = ClipGet() ;'http://www.bokon.net/novel-1/1275637/22245764.html' ;//小说链接
Local $sJsUrl = '' ;//JS链接
Local $sC2 = '' ;// c2 的值,供JS中调用
Local $sCookie = '' ;//定义初始cookie
Local $sCookie_nxgmnmry = '' ;// nxgmnmry cookie
Local $sEncodeUrl = '' ;//加密后的URL,用于获取变化的 nxgmnmry cookie
Local $sStr_Nove = '' ;//小说源码

Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1") ;//建立对象
$oHTTP.Option(4) = 13056 ;忽略错误标志
$oHTTP.Option(6) = True ;是否接收重定向地址信息

tubaba 发表于 2017-8-3 16:36:59

回复 12# zghwelcome


    刚收了我100块,又要收我20{:face (229):}

zghwelcome 发表于 2017-8-3 17:00:02

回复 13# tubaba


    你是钱多多,九牛之一毛

xz00311 发表于 2017-8-3 17:15:21

能不能给点思路啊
页: [1] 2
查看完整版本: WinHttp.WinHttpRequest.5.1取网页内容的问题