精华内容
下载资源
问答
  • 点击上方“Python数据科学”,选择“星标公众号”关键时刻,第一时间送达!作者:zuobangbang来源:zuobangbang最近开始研究网页参数的JS...简单介绍一下JS事件监听:JavaScript之事件概念和监听事件1、事件的概念...

    点击上方“Python数据科学”,选择“星标公众号”

    关键时刻,第一时间送达!

    66bdd29bd6b9a90741625452810176c5.gif

    作者:zuobangbang

    来源:zuobangbang

    最近开始研究网页参数的JS加密,但是大型网站的JS文件过于繁杂,不适合新手上路,于是乎找了几个简单的网页来学习学习。

    首先要和大家聊的是监听事件型爬虫(推荐FireFox浏览器)。简单介绍一下JS事件监听:

    JavaScript之事件概念和监听事件

    1、事件的概念:

    JavaScript使我们有能力创建动态页面,网页中的每一个元素都可以产生某些触发JavaScript函数的事件。我们可以认为事件是可以被JavaScript侦测到的一种行为。

    2、事件流:

    事件流主要分为冒泡型事件和捕获型事件。IE浏览器目前只支持冒泡型事件,而支持标准DOM的浏览器比如火狐、Chrome等两者都支持。

    4d8fa24d565787c62b4fc29c607a8402.png

     3、使用返回值改变HTML元素的默认行为:

      HTML元素大都包含了自己的默认行为,例如:超链接、提交按钮等。我们可以通过在绑定事件中加上"return false"来阻止它的默认行为。

    4、通用性的事件监听方法:

    (1)绑定HTML元素属性:

    (2)绑定DOM对象属性:document.getElementById("xxx").οnclick=test;

    (https://www.cnblogs.com/dorra/p/7349747.html)

    目标网站:http://ac.scmor.com/

    第一次写js类的爬虫,断点调试过程写详细些。

    282998027c8f55a1606c99ba773a5923.png

    鼠标点击现在访问时,会前往另一个网页。用火狐浏览器打开,元素定位到“现在访问”,可以看到下图:网页链接没有出现在源代码中,相反在标签末尾有一个event;这代表当点击“现在访问”这个事件发生时,会被监听并做出相应的反应。

    fd02471f3d90f04124a594be46f6b50d.png

    点击“event”,可以看到一个函数onclick(event),在这个函数里,还有一个visit()函数;这表示当点击“现在访问”发生时,会引发onclick(event)的发生,从而引发visit()函数。

    c79652a6c9c0ef8f2b75a806281246fc.png

    全局搜索(ctrl+shift+f)搜索visit()可以看到下图有一个function visit(url);这就是我们要找的函数啦。(这一步开始使用谷歌浏览器)

    e743a09d4b8c777ca9809aed7f49aaa2.png

    来分析一下这个函数:它的变量是url,也就是上图中visit('QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI=')的QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI=

    给它打断点:

    08823be4a7b9a2ad8352f5971d2a99e1.png

    点击“现在访问”:此时url=QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI=

    bfaf67a134ed4946aed52bdea1ca74a4.png

    不断点击(step over next function call),当走完strdecode()函数后,url更新为要访问的页面。下一步就是找到这个函数并分析。

    ab4976c23dcb4cd43035f67a962ea9c4.png

    找到的strdecode()函数如下:此时

    string='QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI='

    4fb23ac9aadb31154cb361ec56d2faa2.png

    再经过base64decode以后变成了一段乱码:

    a7f1cc0d237c3ca8ff6cc4d2eda593ce.png

    重新打一次断点:经过base64decode(code)后,返回需要的Url;至此所有的断点调试就完成了。

    36f42ced2996e55eec1971bda0069df7.png

    这是base64decode函数的代码,里面有一个base64DecodeChars的变量,在函数里是没有定义的,因此后期自己加上。

    function base64decode(str) {
       var c1, c2, c3, c4;
       var i, len, out;
       len = str.length;
       i = 0;
       out = "";
       while (i < len) {
           do {
               c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]
           } while (i < len && c1 == -1);
           if (c1 == -1) break;
           do {
               c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]
           } while (i < len && c2 == -1);
           if (c2 == -1) break;
           out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
           do {
               c3 = str.charCodeAt(i++) & 0xff;
               if (c3 == 61) return out;
               c3 = base64DecodeChars[c3]
           } while (i < len && c3 == -1);
           if (c3 == -1) break;
           out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
           do {
               c4 = str.charCodeAt(i++) & 0xff;
               if (c4 == 61) return out;
               c4 = base64DecodeChars[c4]
           } while (i < len && c4 == -1);
           if (c4 == -1) break;
           out += String.fromCharCode(((c3 & 0x03) << 6) | c4)
       }
       return out
    }

    还有一个问题,最开始visit()的自变量在哪里呢?网页源代码中都有的噢。一共16个镜像对应16个变量。

    4322e3d55d26394e0bdb71b0a2ba7caa.png

    找到了所有需要的js代码,然后用python还原???不用自己找虐,python提供一个execjs的库,可以直接调用js文件。一共15行代码就可以获得所需的网址啦。

    if __name__ == '__main__':
       url='http://ac.scmor.com/'
       headers={
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
       }
       html=requests.get(url,headers=headers).text
       soup=BeautifulSoup(html,'lxml')
       infs=soup.find('head').find_all('script',type='text/javascript')
       infs=re.findall(r'autourl(.*?);',str(infs))
       node = execjs.get()
       file = '谷歌学术镜像.js'
       ctx = node.compile(open(file, encoding='utf-8').read())
       for inf in infs:
           data=inf.split('=',1)[1][2:-1]
           js='strdecode("{}") '.format(data)
           print(ctx.eval(js))

    最后结果如下:

    7110f6f27d0ecec8183da3e4cdb26103.png

    代码以及Js文件上传到GitHub(https://github.com/zuobangbang/javascript-decode/tree/master/google);觉得不错就star/fork下;有兴趣可以自己做一遍。

    往期精彩推荐 

    2019年,被高估的AI与数据科学该如何发展?

    2018年原创精选文章汇总

    大型裁员现场,究竟谁笑到了最后...

    这一年我都做了些什么?

    ae08f3463bce878534717aba29fa094b.png

    展开全文
  • spans[i].onclick= function () { document.getElementById( "showdiv" ).style.backgroundColor= this .style.background; } } } script > head > < body > < div id = "firtsdiv" > < div...
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                *{margin: 0px;padding: 0px;border-collapse:collapse;}
                #firtsdiv{width: 400px;height: 100px;border: 1px solid green;}
                #firtsdiv>div{width: 400px;height: 50px;border: 1px solid blue;}
                .span>span{width: 90px;height: 30px;float: right;margin: 5px;}
            </style>
            <script type="text/javascript">
                window.onload=function(){
                    var spans=document.getElementsByTagName("span");
                    for (var i=0;i<spans.length;i++) {
                        spans[i].onclick=function(){
                            document.getElementById("showdiv").style.backgroundColor=this.style.background;
                        }
                    }
                }
            </script>
        </head>
        <body>
            <div id="firtsdiv">
                <div id="showdiv"></div>
                <div class="span">
                    <span style="background:black;"></span>
                    <span style="background: blue;"></span>
                    <span style="background: blueviolet;"></span>
                    <span style="background: red;"></span>
                </div>
            </div>
        </body>
    </html>
    

    这里写图片描述

    展开全文
  • JS点击事件 onclick

    2018-12-27 10:34:52
    onclick 点击事件 onclick 以文字de放大与缩小为实例 嗨… 各位小可爱们,我们又见面了 先来了解一下定义和用法 onclick 属性在单击鼠标时触发。 记住是 单击单击单击!!! 废话不多,直接上代码,希望能对...

    onclick 点击事件

    onclick 以文字de放大与缩小为实例

    嗨… 各位小可爱们,我们又见面了

    先来了解一下定义和用法

    onclick 属性在单击鼠标时触发。 记住是 单击单击单击!!! 只点击一次即可触发事件

    废话不多,直接上代码,希望能对你们有所帮助

    	<meta charset="utf-8" />
    	<style type="text/css">
    		
    		#wrap{
    			
    			width: 90%;
    			height: 100%;
    			margin: 50px auto;
    			padding: 20px;
    			font-family: arial;
    			font-size: 18px;
    			color: white;
    			border-radius: 10%;
    			background-image: radial-gradient(ellipse 100% 100% at center,pink 35%,
    			lightpink 45%, deeppink 100%);/*设置背景颜色*/
    		}
    		#wrap p{
    			text-indent: 2em;
    		}
    		#wrap span{
    			display: inline-block;
    			width: 50px;
    			height: 25px;
    			background-color: deeppink;
    			text-align: center;
    			line-height: 25px;
    			margin-left: 80px;
    			cursor: pointer;
    		}
    		
    	</style>
    	
    </head>
    <body>
    	
    	<div id="wrap">
    		
    		<span> + </span>
    		<span> - </span>
    		
    		<p>我感到难过,不是因为你欺骗了我,而是因为我再也不能相信你了。 ——尼采 </p> 
    		<p>我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活。 ——宫崎骏 </p> 
    		<p>你锋芒毕露,这是你的弱点,你像把无鞘刀,锋利,但好刀应在刀鞘里。 ——黑泽明《剑穿心》 </p> 
    		<p>如果你给我的,和你给别人的是一样的,那我就不要了。 ——三毛 </p> 
    		<p>花朵预兆着果实,少女梦想着爱情。 ——雨果《海上劳工》 </p> 
    		<p>为什么你看到别人眼中有刺,却看不到自己眼中有梁木。 ——《圣经》 </p> 
    		<p>没有不可治愈的伤痛,没有不能结束的沉沦,所有失去的,会以另一种方式归来。——约翰•肖尔斯《许愿树》 </p> 
    		<p>别人帮你,那是情分,不帮你,那是本分。容不容得下是你的气度,能不能让你容下是我的本事。——《甄嬛传》 </p> 
    		<p>一切都明明白白,但我们仍匆匆错过,因为你相信命运,因为我怀疑生活。——顾城《错过》 </p> 
    		<p>我需要,最狂的风,和最静的海。 ——顾城 </p> 
    		<p>没有人愿意被关在笼子里,问题是给你一片无边无际的天空,你是不是真的敢要。 ——江南《此间的少年》 </p> 
    		<p>Is life always this hard,or is it just when you are a kid? </p> 
    		<p>人生总是那么痛苦吗?还是只有小时候是这样? </p> 
    		<p>Always like this. </p> 
    		<p>总是如此。 ——《这个杀手不太冷》 </p> 
    		<p>我一直以为,我没有对不住任何人,但现在我知道,我最对不住的,就是我自己。 ——陈凯歌《无极》 </p> 
    		<p>如谷之歌,扎根土里。与风共存,与种子越冬,与鸟歌颂。 ——宫崎骏《天空之城》 </p> 		
    		<p>也许,每天看见许多的水,对人类具有重大意义。 ——村上春树《当我谈跑步时我谈些什么》 </p> 
    		<p>不要停在平原,不要登上高山,从半山上看,世界显得最美。 ——尼采《世界的智慧》 </p> 
    		<p>有时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。 ——韩寒《后会无期》 </p>
    		
    	
    	<script type="text/javascript">
    		
    		let oWrap = document.getElementById("wrap");
    		let oSpan = document.getElementsByTagName("span");
    		let font=18;
    		
    		oSpan[0].onclick = function(){//点击事件
    			
    			font++;
    			if(font>=21){
    				font = 21;
    			}
    			oWrap.style.fontSize = font + "px";
    		}
    		
    		oSpan[1].onclick = function(){
    			
    			font--;
    			if(font>=10){
    				font = 10;
    			}
    			oWrap.style.fontSize = font + "px";
    		}
    		
    	</script>
    	
    </body>
    

    文字从网上摘的,嘿嘿,直接看效果

    点击+可以对文字进行放大,点击-可以对文字进行缩小

    展开全文
  • &lt;script type="...// 两秒后模拟点击 setTimeout(function() { // IE if(document.all) { document.getElementById("clickMe").click(); } // 其它浏览器 else { va...
     <script type="text/javascript">
    // 两秒后模拟点击
    setTimeout(function() {
        // IE
        if(document.all) {
            document.getElementById("clickMe").click();
        }
        // 其它浏览器
        else {
            var e = document.createEvent("MouseEvents");
            e.initEvent("click", true, true);
            document.getElementById("clickMe").dispatchEvent(e);
        }
    }, 2000);
    </script>
      
    <a href="http://www.sinmeng.net" id="clickMe" onclick="alert('clicked');">触发onclick</a>

     

    展开全文
  • 今天写js方法,js点击事件总报错onclick is not defined错误,困扰很久。查询资料得以解决。正确写法如下: function funFormatter (value, rowData, rowIndex) { return "<a href='javacript:;' οnclick= ...
  • 转载于:https://www.cnblogs.com/shandayuan/p/7156168.html
  • 本文实例讲述了JavaScript给按钮绑定点击事件onclick)的方法。分享给大家供大家参考。具体分析如下: 我们可以通过设定按钮的onclick属性来给按钮绑定onclick事件 html> head> script> function displayDate...
  • 按理说,点击这张图片,它应该会来回旋转,但是这张图片的点击事件只触发了一次,之后再点击都没有反应,请问这是怎么回事? 下面是我用的图片 ![图片说明]...
  • 项目中有用到使用js拼接onclick方法,但是onclick中的参数始终获取不到; 此处的templateKey是一个字母加下划线的组合: value += "<a class='delete' onclick='deleteDataTemplate("+ full.id +"," + full....
  • &lt;!DOCTYPE html&gt; &lt;html&gt;  &lt;head&gt;  &lt;meta charset="...点击换&lt;/title&gt;  &lt;link id="skin" rel="stylesheet" ty
  • js onclick点击事件只执行一次

    万次阅读 2018-09-08 09:46:56
    p onclick="expandComcode()" &gt;点击&lt;/p&gt; 2、js var flag = true; function expandComcode(){ if(flag){ $.ajax({ type: "get", url:...
  • 一般事件事件 浏览器支持 描述onClick HTML: 2 | 3 | 3.2 | 4Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick HTML: 2 | 3 | 3.2 | 4Browser: IE4 | N4 | O 鼠标双击事件...
  • onclick点击某个对象时触发 ondblclick:双击某个对象时触发 onmouseover:鼠标移入某个元素时触发 onmouseout:鼠标移出某个元素时触发 onmouseenter:鼠标进入某个元素时触发 onmouseleave:鼠标离开某个元素时...
  • JS自动触发onclick事件

    2020-04-04 21:40:07
    <div id="btn" οnclick="tip('...触发onclick</div> <script type="text/javascript"> function tip (msg){ alert(msg); } // 三秒后模拟点击 setTimeout(function() { // IE浏览器 if(docume...
  • js循环添加onclick事件

    千次阅读 2016-12-09 11:04:23
    javascript在循环添加onclick事件时会出现函数传入参数均为最后一个值的问题,编写一个test.html如下所示: for (var i=0;i;i++) { var bt=document.getElementById('bt'+i); bt.onclick=function(){...
  • img.onclick= function () { index++; if (index> 4 ){ index= 1 ; } img.src= "image/ad-0" +index+ ".jpg" ; } } script > head > < body > < img src = "image/ad-01.jpg" /> body...
  • js中的onclick事件在ul获取li时点击两次才会执行的原因下面的代码中 只有onclick第二次才会执行函数内部的代码代码实例如下:&lt;!DOCTYPE html&gt;&lt;...gt; &...js点击事件&lt;/title&gt;
  • JS点击事件

    千次阅读 2019-04-07 16:49:10
    第一种: 第二种: ...btnObj.click()是真正地用程序去点击按钮,触发了按钮的onclick()事件 btnObj.onclick()只是简单地调用了btnObj的onclick所指向的方法,只是调用方法而已,并未触发事件 ...
  • 今天测试突然提了这个bug,移动端onclick事件点击失效问题,网上找了好多方法,都是解决在js中绑定点击事件的问题 在js中绑定点击事件用click是兼容的 &lt;div id="test"&gt;click&lt;/div&...
  • js click 与 onclick 事件绑定,触发与解绑   click 与 onclick 1.onclick 事件会在对象被点击时发生。 function test() { alert(“我是行间事件”); } 当点击id="btn1"时,触发onclick事件   2.onclick...
  • 事件的注册就是将事件绑定到页面的某个元素上; 事件注册有两种方式: 1.将事件绑定在元素上 ...button onclick="clickBtn();">come on</button> <script> function clickBtn(){ al...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,292
精华内容 916
关键字:

js点击事件onclick