HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Timeout = 300000;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, nowCharset);
html = reader.ReadToEnd();我用以上代码请求这个页面
http://61.152.237.204:8081/query_result.asp?wen=268788104000
得到的的html和直接在浏览器浏览时的结果不同,好像是服务端那边做了些手脚限制
我得到的html是有这样一个js
function decoder() {
var kvbb = new Array(247, 106, 100, 194, 95, 151, 69, 76, 106, 142, 21, 32, 189, 20, 52, 217, 58, 209, 124, 93, 199, 185, 50, 40, 2, 3, 215, 76, 184, 145, 169, 23, 164, 45, 185, 183, 206, 80, 143, 144, 20, 18);
var i = 3;
do {
kvbb[i] = (kvbb[i] + kvbb[i + 1]) & 0xff;
} while (++ zlv <= 40 );
var zlv = 40;
for (;;) {
if (zlv < 4) break;
kvbb[zlv] = (kvbb[zlv] - kvbb[zlv - 1]) & 0xff;
zlv--;
}
var zlv = 40;
do {
kvbb[zlv] = (((((kvbb[zlv] - 126) & 0xff) - 241) & 0xff) >> 4) | ((((((kvbb[zlv] - 126) & 0xff) - 241) & 0xff) << 4) & 0xff);
} while (-- zlv >= 4 );
alert(kvbb[1]+"-"+kvbb[2]+"-"+ kvbb[4]+"-"+ kvbb[5]+"-"+ kvbb[7]+"-"+ kvbb[14]+"-"+ kvbb[15]+"-"+ kvbb[17]+"-"+ kvbb[25]+"-"+ kvbb[28]+"-"+ kvbb[32]+"-"+ kvbb[33]+"-"+ kvbb[35]+"-"+ kvbb[40]);
return String.fromCharCode(kvbb[1], kvbb[2], kvbb[4], kvbb[5], kvbb[7], kvbb[14], kvbb[15], kvbb[17], kvbb[25], kvbb[28], kvbb[32], kvbb[33], kvbb[35], kvbb[40]);
}
window.location = "/query_result.asp?wen=268788104000&" + decoder();会做一次跳转到http://61.152.237.204:8081/query_result.asp?wen=268788104000&jdfwkey=3jjiz3
3jjiz3应该是更具kvbb那个数组里面某个规律得到的,每次请求得到的kvbb数组都不同
请问大家有没有什么办法解决?
request.Timeout = 300000;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, nowCharset);
html = reader.ReadToEnd();我用以上代码请求这个页面
http://61.152.237.204:8081/query_result.asp?wen=268788104000
得到的的html和直接在浏览器浏览时的结果不同,好像是服务端那边做了些手脚限制
我得到的html是有这样一个js
function decoder() {
var kvbb = new Array(247, 106, 100, 194, 95, 151, 69, 76, 106, 142, 21, 32, 189, 20, 52, 217, 58, 209, 124, 93, 199, 185, 50, 40, 2, 3, 215, 76, 184, 145, 169, 23, 164, 45, 185, 183, 206, 80, 143, 144, 20, 18);
var i = 3;
do {
kvbb[i] = (kvbb[i] + kvbb[i + 1]) & 0xff;
} while (++ zlv <= 40 );
var zlv = 40;
for (;;) {
if (zlv < 4) break;
kvbb[zlv] = (kvbb[zlv] - kvbb[zlv - 1]) & 0xff;
zlv--;
}
var zlv = 40;
do {
kvbb[zlv] = (((((kvbb[zlv] - 126) & 0xff) - 241) & 0xff) >> 4) | ((((((kvbb[zlv] - 126) & 0xff) - 241) & 0xff) << 4) & 0xff);
} while (-- zlv >= 4 );
alert(kvbb[1]+"-"+kvbb[2]+"-"+ kvbb[4]+"-"+ kvbb[5]+"-"+ kvbb[7]+"-"+ kvbb[14]+"-"+ kvbb[15]+"-"+ kvbb[17]+"-"+ kvbb[25]+"-"+ kvbb[28]+"-"+ kvbb[32]+"-"+ kvbb[33]+"-"+ kvbb[35]+"-"+ kvbb[40]);
return String.fromCharCode(kvbb[1], kvbb[2], kvbb[4], kvbb[5], kvbb[7], kvbb[14], kvbb[15], kvbb[17], kvbb[25], kvbb[28], kvbb[32], kvbb[33], kvbb[35], kvbb[40]);
}
window.location = "/query_result.asp?wen=268788104000&" + decoder();会做一次跳转到http://61.152.237.204:8081/query_result.asp?wen=268788104000&jdfwkey=3jjiz3
3jjiz3应该是更具kvbb那个数组里面某个规律得到的,每次请求得到的kvbb数组都不同
请问大家有没有什么办法解决?
解决方案 »
- 散分了。
- 关于skyline筛选点是否在多边形内问题,求解答
- 用鼠标点住左键选择多个同一个界面下的Label 得到Label 的Text 在线等。
- 球面贴图的问题:如何在圆球上贴文字,产生立体效果,不要OpenGL,DirectX的,要的是C++ Or C#算法。
- web应用编译问题(c#.NET webApplication)
- web form 如何实现这种取消操作?
- 关于运算符重载的问题???很急
- 请问弹出来的菜单是一个窗口吗?如果不是,我怎么去判断它是否弹出?
- 哪位大虾能把这段代码翻译成的?100分相送,不够再加!大虾请出手啊!小第先谢过了
- 为什么C#编译不通过
- C#程序代码问题?
- c#输入字符串格式不正确
类似的情况我遇到过。
1,使用IE WebBrowser控件,这个可以执行JS。
2,自己解码,你看,算法都已经在上面的js代码里了,不算复杂,自己把array里面的数据解密出来就好了。
就可以替换window.location =....
把window.location换成某个textbox,比如document.getElementById('txt1').value=后面的保留原样;
这样textbox中就会显示出js执行之后的结果。然后你在通过一个button提交这个textbox中的url,后台再用WebRequest重新请求一下这个url。
HttpWebResponse rsp = null;HttpWebRequest req = null; req = (HttpWebRequest)WebRequest.Create(url);req.ContentType = "multipart/form-data";req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";req.Method = "GET";rsp = (HttpWebResponse)req.GetResponse();
然后就应该可以得到你想要的回应啦
to jimh 我发现即使我执行了了那个js,然后做再做一次请求,也没办法,我用Fiddler监听http,请求那个页面的时候产生了我得到的代码,然后跳转,跳转后的那个页面http header 看到 ASPSESSIONIDSQDRDDCA=DADELDLDJPCADOKKIJHGPDJO的东西
to lerit 我是模拟一个浏览器请求的,Accept和UserAgent都有,但还是这样,我想即使是用真的浏览器访问,他也会返回这样的html然后跳转的
jimh 的方法比较可行,不过不知是不是我哪里出了问题