网页中的js代码分析 ( 积分: 100 )

4

445566

Unregistered / Unconfirmed
GUEST, unregistred user!
在网页中,有一段js代码,加载后能生成一段广告,如何用delphi分析出广告的连接地址,
 
直接分析代码有困难。不如让IE浏览这个网页,然后用IE.Document.outerHTML属性读取
经过浏览器执行后的最终的网页HTML代码,这时,用普通的静态页面中的URL提取技术就可
以达到目的了。
 
可以用TweBBrowser实现吗
 
我没用过TweBBrowser,向来都是直接创建IE的COM对象,操纵它,解读它。
 
要分析简单,首先找到 <script> 代码块,然后取出里面的 <a .....></a>链接块,然后从中找到 href 后面连续的字符, 这就是url了,之后要怎么做你可没问啊!
貌似我用 C 写的 html 解分器,也有类似的原理! 不过用 delphi也不会太慢!
 
<script type='text/javascript'>
var __sogou_ad = new Array();
__sogou_ad[&quot;pid&quot;] = 'zealer';
__sogou_ad[&quot;fmt&quot;] = 'h_728_90'
__sogou_ad[&quot;iw&quot;] = '728';
__sogou_ad[&quot;ih&quot;] = '90';
__sogou_ad[&quot;charset&quot;] = 'gb2312';
__sogou_ad[&quot;c_bo&quot;] = 'ACD8FF';
__sogou_ad[&quot;c_bg&quot;] = '00FFCC';
__sogou_ad[&quot;c_li&quot;] = '0434CF';
__sogou_ad[&quot;c_te&quot;] = '000000';
__sogou_ad[&quot;c_bb&quot;] = 'ACD8FF';
</script>
<script src='http://images.sohu.com/cs/jsfile/js/SogouUnionCPC.js'></script>
呵呵,网页中的script代码如上
SogouUnionCPC.js代码如下
function q(s) {
return s.replace(/%/g, &quot;%25&quot;).replace(/&amp;/g,'%26');
}
__sogou_ad_url=&quot;http://adsence.sogou.com/index.html&quot;;
__sogou_param_cont = 0;
__sogou_ad[&quot;sohuurl&quot;] = new String(document.location ?do
cument.location :do
cument.referrer);
for (var p in __sogou_ad) __sogou_ad_url += (__sogou_param_cont++ ? &quot;&amp;&quot;
: &quot;?&quot;) + q(p) + &quot;=&quot;
+ q(__sogou_ad[p]);
document.write('<iframe marginwidth=&quot;0&quot;
marginheight=&quot;0&quot;
frameborder=&quot;0&quot;
bordercolor=&quot;#000000&quot;
scrolling=&quot;no&quot;
src=&quot;' + __sogou_ad_url + '&quot;
width=&quot;' + __sogou_ad[&quot;iw&quot;] + '&quot;
height=&quot;' + __sogou_ad[&quot;ih&quot;] +'&quot;></iframe>');
dcms您的方法好像比较难实现阿
不过creation-zy您的思路好像简单,但是实现起来对我挺困难的,QQ:3446150
 
很难实现吗? 我没看出来,我只不过比较喜欢自己写而已:) 没关系,用什么方法你自己看着办.
 
呵呵,恐怕你也知道这个程序是干什么用的了,我没怎么学过编程
 
uses
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
IE:Variant;
begin
IE:=CreateOleObject('InternetExplorer.Application');
IE.Visible:=Visible;
IE.Navigate2('http://www.delphibbs.com');
Sleep(4000);
Caption:=IE.Document.Title;
Memo1.Text:=VarToStr(IE.Document.Body.innerHTML);
end;

要获得网页内嵌有的各个IFRAME的HTML代码,则应该用do
cument的frames 属性了。
 
感谢creation-zy,您的代码可以读取iframe 中的源码.能得到查看源文件得不到的东西.
这是您的程序所得到的有用东西:
<IFRAME marginWidth=0 marginHeight=0 src=&quot;http://adsence.sogou.com/index.html?pid=zealer&amp;amp;fmt=h_728_90&amp;amp;iw=728&amp;amp;ih=90&amp;amp;charset=gb2312&amp;amp;c_bo=ACD8FF&amp;amp;c_bg=00FFCC&amp;amp;c_li=0434CF&amp;amp;c_te=000000&amp;amp;c_bb=ACD8FF&amp;amp;sohuurl=http://www.jxdqw.com/deafult.htm&quot;
frameBorder=0 width=728 scrolling=no height=90 bordercolor=&quot;#000000&quot;></IFRAME>
但这不是广告的URL,上面这段代码能生成广告页面,广告的URL在网页上用右键看属性还是能看到的.但是网页源文件中是没有的.
我的思路有问题了?
 
我所说的IFRAME内部页面代码,是指document的frames属性对应的子document,而您贴出
来的还是主document的相关代码而已——除了src之外,得不到其它信息。
不好意思,我这几天比较忙,你可以找找JavaScript手册自己试验一下取frames的HTML代
码。
 
真的很感谢.我再找找看看吧
 
多人接受答案了。
 
顶部