kenvifire 发表于 2011-12-22 08:54

Bookmarklet 问问学堂刷分攻略(图文教学版)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是做的第二个腾讯平台的刷分工具了,基本上腾讯的活动我感兴趣的,我都弄了刷分工具的,上次刷了几个Q币,腾讯没发给我,这次刷分之后,抽了个QQ公仔,希望能给我,免得浪费我的时间和精力。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我也是刚接触javascript,我还做过csdn的刷分工具,之前都是用java写,太累了,cookie啊,状态啊,都要自己控制,很麻烦,但是用javascript嵌在网页里,只需要处理一部分动作就行了,其他的浏览器和网站默认的javascript脚本会自动完成的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面,简单介绍一下,这个刷分工具的制作过程。<br>1.目标<br>&nbsp;&nbsp; 问问四周年的活动,里面有个问问学堂的任务,做随堂测试,每一题1分,可以无限次答题,取得分最高的一次,时限是100秒。这个工具就是要在100秒内尽可能多刷题目。<br><br>1.知己知彼百战百胜<br>&nbsp; 我们先要了解一下,整个程序的运行步骤,这样才能找到切入点。<br>&nbsp;一般网页程序,都是靠后台的javascript脚本来控制的,前面的html是静态的。所以从程序的javascript脚本入手就行了。从网页的源码里可以找到javascript的文件,下载下来,用工具格式化一下。<br>&nbsp;<br>代码主要有以下几个方法:<br><br>a. 开始课程,主要设置时间和定时器<br>&nbsp; restTime是剩余时间<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">function</span> _startCourse<span style="color:#0000CC;">(</span>data2<span style="color:#0000CC;">)</span><br></span></li><li>
<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;ajax_time_opr<span style="color:#0000CC;">[</span>OPR_START_CHALLENGE<span style="color:#0000CC;">]</span><span style="color:#0000CC;">=</span><span style="color:#0000FF;">new</span> <span style="color:#FF0000;">Date</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getTime</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">-</span>ajax_time_opr<span style="color:#0000CC;">[</span>OPR_START_CHALLENGE<span style="color:#0000CC;">]</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;_sendStat<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"sp"</span><span style="color:#0000CC;">,</span>OPR_START_CHALLENGE<span style="color:#0000CC;">+</span><span style="color:#FF00FF;">"|"</span><span style="color:#0000CC;">+</span>ajax_time_opr<span style="color:#0000CC;">[</span>OPR_START_CHALLENGE<span style="color:#0000CC;">]</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>data2<span style="color:#0000CC;">&amp;</span><span style="color:#0000CC;">&amp;</span>data2<span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">&amp;</span><span style="color:#0000CC;">&amp;</span>data2<span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>1<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">var</span> resetTime<span style="color:#0000CC;">=</span>TIME_LIMIT_TEST<span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>challengeType<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetTime<span style="color:#0000CC;">=</span>TIME_LIMIT_CHALLENGE<br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"restTime"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">=</span>resetTime<span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>timer<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span><span style="color:#0000FF;">null</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer<span style="color:#0000CC;">=</span><span style="color:#FF0000;">setInterval</span><span style="color:#0000CC;">(</span>_timerOpr<span style="color:#0000CC;">,</span>1000<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;_displayCourse<span style="color:#0000CC;">(</span>data2<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
<span style="color:#0000CC;">}</span></li></ol></div><br>&nbsp;b.停止答题<br>&nbsp;&nbsp;&nbsp;&nbsp; 主要是停止定时器<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">function</span> _answerEnd<span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">)</span><br></span></li><li>
<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;ajax_time_opr<span style="color:#0000CC;">[</span>OPR_ANSWER_QUESTION<span style="color:#0000CC;">]</span><span style="color:#0000CC;">=</span><span style="color:#0000FF;">new</span> <span style="color:#FF0000;">Date</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getTime</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">-</span>ajax_time_opr<span style="color:#0000CC;">[</span>OPR_ANSWER_QUESTION<span style="color:#0000CC;">]</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;_sendStat<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"sp"</span><span style="color:#0000CC;">,</span>OPR_ANSWER_QUESTION<span style="color:#0000CC;">+</span><span style="color:#FF00FF;">"|"</span><span style="color:#0000CC;">+</span>ajax_time_opr<span style="color:#0000CC;">[</span>OPR_ANSWER_QUESTION<span style="color:#0000CC;">]</span><span style="color:#0000CC;">+</span><span style="color:#FF00FF;">"|an|"</span><span style="color:#0000CC;">+</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">+</span><span style="color:#FF00FF;">"|cat|"</span><span style="color:#0000CC;">+</span>vcourseCategoryId<span style="color:#0000CC;">+</span><span style="color:#FF00FF;">"|ty|"</span><span style="color:#0000CC;">+</span>challengeType<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>1<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;_answerRight<span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000FF;">else</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span><span style="color:#0000CC;">-</span>1<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stopTimer<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_answerError<span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">else</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">.</span>result<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span><span style="color:#0000CC;">-</span>2<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stopTimer<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_timeEnd<span style="color:#0000CC;">(</span><span style="color:#0000FF;">false</span><span style="color:#0000CC;">,</span><span style="color:#FF0000;">data</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
<span style="color:#0000CC;">}</span></li></ol></div>c.定时器回调函数<br>&nbsp; 负责处理定时器事件,每秒一次,这个函数写的很巧妙,是通过最大时间减去逝去的时间得到剩余的时间,再赋值给restTime,所以直接改restTime提高时间是没有用的,每次_timeOpr调用的时候,restTime又被设置成正确的值了。<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">function</span> _timerOpr<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><br></span></li><li>
<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;time<span style="color:#0000CC;">+</span><span style="color:#0000CC;">=</span>1<span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>challengeType<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>time<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">=</span>TIME_LIMIT_CHALLENGE<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stopTimer<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_timeEnd<span style="color:#0000CC;">(</span><span style="color:#0000FF;">true</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">else</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"restTime"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">=</span>TIME_LIMIT_CHALLENGE<span style="color:#0000CC;">-</span>time<br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000FF;">else</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>challengeType<span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>1<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>time<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">=</span>TIME_LIMIT_TEST<span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_stopTimer<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_timeEnd<span style="color:#0000CC;">(</span><span style="color:#0000FF;">true</span><span style="color:#0000CC;">)</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">else</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"restTime"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">=</span>TIME_LIMIT_TEST<span style="color:#0000CC;">-</span>time<br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
<span style="color:#0000CC;">}</span></li></ol></div>d.答题的API,调用的是QzApp,应该是Qzone的API吧。<br>&nbsp;qid 代表问题的题号,answerid代表答案的序号<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;">QzApp<span style="color:#0000CC;">.</span>answerQ<span style="color:#0000CC;">(</span>qid<span style="color:#0000CC;">,</span>answerid<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span></span></li></ol></div>&nbsp; <br>几个重要的函数都在上面了,其他的就是资源初始化之类的,太多magicnumber了,看不懂。<br><br>3.下面简单叙述一下我的方案。<br><br>&nbsp;&nbsp; 方案一:问题到来了,自动解析问题并提交。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 难点:在网页加载好后,怎么自动调用自己的javascript代码,这个没解决。<br>&nbsp; 方案二:问题到来了,手动触发代码,解析问题,并提交答案。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 难点:如何手动触发,解决办法是用Bookmarklet<br><br>&nbsp;那么工具就确定了,用Bookmarklet,简单介绍一下<br>Bookmarklet是bookmark 和applet的结合,说白了,其实就是firefox的书签工具栏。<br>书签里除了可以收藏网址外,还可以收藏有特定功能的javascript代码。<br>例如你把下面的代码加入到书签工具栏中:<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;">javascript<span style="color:#0000CC;">:</span><span style="color:#FF0000;">alert</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"test"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span></span></li></ol></div>那么,你在任何一个网页中,点击这个书签的话,会弹出alert窗口的。<br>也就是说,书签工具栏是可以手动触发的,并且可以执行javascript代码。这样就足够了。<br><br><br>4.分析代码,查找切入点<br><br>整个程序的逻辑其实很简单,开始答题,计时--&gt;答题--&gt;正确继续,错误就结束本次答题。<br>前面已经说过,改时间是没戏的。我们只能模拟答题了,只是把找答案的时间都省略掉就可以了。<br>经过测试发现:<br>1.题目总共只有50个左右<br>2.答案在问问里都有<br>所以,我们可以收集题目和答案,直接和选项比对,然后提交即可。<br><br>5.收集题目<br>这步就略去了。。。完全人工操作<br><br>6.写代码,我也是刚学javascript很多东西都是网上搜的,而且出了错也花了很长时间排除。<br><br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">var</span> list <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> <span style="color:#FF0000;">Array</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></span></li><li>
list<span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span> <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> <span style="color:#FF0000;">Array</span><span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
list<span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span> <span style="color:#0000CC;">=</span> <span style="color:#FF00FF;">"题目:帮助网友解决问题大量问题,有机会获得什么?"</span><span style="color:#0000CC;">;</span><br></li><li>
list<span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>1<span style="color:#0000CC;">]</span> <span style="color:#0000CC;">=</span><span style="color:#FF00FF;">"列出的都能获得"</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#FF9900;">//中间是问题列表,略去了。。。</span><br></li><li>
<br></li><li>
<br></li><li>
<span style="color:#0000FF;">var</span> lilist <span style="color:#0000CC;">=</span> <span style="color:#FF0000;">window</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">document</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementById</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"contentWrap"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementsByTagName</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"li"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">var</span> <span style="color:#FF0000;">title</span> <span style="color:#0000CC;">=</span> <span style="color:#FF0000;">window</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">document</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementById</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"quesTitle"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">var</span> qid <span style="color:#0000CC;">=</span> <span style="color:#FF0000;">window</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">document</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementById</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"qId"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">value</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">var</span> aid<span style="color:#0000CC;">=</span><span style="color:#0000CC;">-</span>1<span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">var</span> answer <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">null</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">var</span> i<span style="color:#0000CC;">;</span><br></li><li>
<br></li><li>
<br></li><li>
<span style="color:#0000FF;">for</span><span style="color:#0000CC;">(</span>i<span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">;</span>i<span style="color:#0000CC;">&lt;</span>50<span style="color:#0000CC;">;</span>i<span style="color:#0000CC;">+</span><span style="color:#0000CC;">+</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span><span style="color:#FF0000;">title</span> <span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span> list<span style="color:#0000CC;">[</span>i<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;   answer<span style="color:#0000CC;">=</span>list<span style="color:#0000CC;">[</span>i<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>1<span style="color:#0000CC;">]</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;   <span style="color:#0000FF;">break</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
<br></li><li>
<span style="color:#0000FF;">var</span> j<span style="color:#0000CC;">=</span> 0 <span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">for</span><span style="color:#0000CC;">(</span>j<span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">;</span>j<span style="color:#0000CC;">&lt;</span>lilist<span style="color:#0000CC;">.</span><span style="color:#FF0000;">length</span><span style="color:#0000CC;">;</span>j<span style="color:#0000CC;">+</span><span style="color:#0000CC;">+</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp; <br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">var</span> tmp <span style="color:#0000CC;">=</span> lilist<span style="color:#0000CC;">[</span>j<span style="color:#0000CC;">]</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementsByTagName</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"span"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">var</span> str <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> <span style="color:#FF0000;">String</span><span style="color:#0000CC;">(</span>tmp<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>str<span style="color:#0000CC;">.</span><span style="color:#FF0000;">substring</span><span style="color:#0000CC;">(</span>2<span style="color:#0000CC;">,</span>tmp<span style="color:#0000CC;">.</span><span style="color:#FF0000;">length</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>answer<span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QzApp<span style="color:#0000CC;">.</span>answerQ<span style="color:#0000CC;">(</span>qid<span style="color:#0000CC;">,</span>j<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">break</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
<br></li><li>
<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>answer <span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span><span style="color:#0000FF;">null</span> <span style="color:#0000CC;">|</span><span style="color:#0000CC;">|</span>j<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">=</span>lilist<span style="color:#0000CC;">.</span><span style="color:#FF0000;">length</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#FF0000;">alert</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"error"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span></li></ol></div>简单解释一下,list是问题和答案的列表<br>lilist是ABCD选项<br>title是问题<br>qid是问题id<br><br>下面的代码负责搜索问题列表,寻找出和当前问题相同的问题<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">for</span><span style="color:#0000CC;">(</span>i<span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">;</span>i<span style="color:#0000CC;">&lt;</span>50<span style="color:#0000CC;">;</span>i<span style="color:#0000CC;">+</span><span style="color:#0000CC;">+</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></span></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span><span style="color:#FF0000;">title</span> <span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span> list<span style="color:#0000CC;">[</span>i<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;   answer<span style="color:#0000CC;">=</span>list<span style="color:#0000CC;">[</span>i<span style="color:#0000CC;">]</span><span style="color:#0000CC;">[</span>1<span style="color:#0000CC;">]</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;   <span style="color:#0000FF;">break</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0000CC;">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span></li></ol></div><br>然后,根据搜到的题目的答案,搜寻出正确的选项<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000FF;">var</span> j<span style="color:#0000CC;">=</span> 0 <span style="color:#0000CC;">;</span><br></span></li><li>
<span style="color:#0000FF;">for</span><span style="color:#0000CC;">(</span>j<span style="color:#0000CC;">=</span>0<span style="color:#0000CC;">;</span>j<span style="color:#0000CC;">&lt;</span>lilist<span style="color:#0000CC;">.</span><span style="color:#FF0000;">length</span><span style="color:#0000CC;">;</span>j<span style="color:#0000CC;">+</span><span style="color:#0000CC;">+</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">var</span> tmp <span style="color:#0000CC;">=</span> lilist<span style="color:#0000CC;">[</span>j<span style="color:#0000CC;">]</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">getElementsByTagName</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"span"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">[</span>0<span style="color:#0000CC;">]</span><span style="color:#0000CC;">.</span><span style="color:#FF0000;">innerHTML</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">var</span> str <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> <span style="color:#FF0000;">String</span><span style="color:#0000CC;">(</span>tmp<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span><span style="color:#0000CC;">(</span>str<span style="color:#0000CC;">.</span><span style="color:#FF0000;">substring</span><span style="color:#0000CC;">(</span>2<span style="color:#0000CC;">,</span>tmp<span style="color:#0000CC;">.</span><span style="color:#FF0000;">length</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">=</span><span style="color:#0000CC;">=</span>answer<span style="color:#0000CC;">)</span><span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QzApp<span style="color:#0000CC;">.</span>answerQ<span style="color:#0000CC;">(</span>qid<span style="color:#0000CC;">,</span>j<span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">break</span><span style="color:#0000CC;">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">}</span><br></li><li>
&nbsp;<span style="color:#0000CC;">}</span></li></ol></div>QzApp.answerQ(qid,j)进行提交<br><br>这样,整个过程就完成了。<br><br>7.测试<br>100秒基本上能够达60道题,因为刷问题有点延时,总之里面的任务都可以完成了,一个是做20分,一个是做50分的,搓搓有余了。<br><br>下面是我做的题目截图:<br><a href="http://blog.chinaunix.net/attachment/201107/3/21718047_13096862240FgW.jpg" target="_blank" target="_blank"><img src="http://blog.chinaunix.net/attachment/201107/3/21718047_13096862240FgW.jpg" .load="imgResize(this, 650);" ;="" border="0"></a><br>刷了68题,呵呵,刷了个QQ公仔,攒点人品,希望能抽个大奖了。<br><br>=======================最新战报==============================<br>帮一个网友刷到77题了<br><div>
<a href="http://blog.chinaunix.net/attachment/201107/4/21718047_1309743948YgcH.jpg" target="_blank" target="_blank"><img src="http://blog.chinaunix.net/attachment/201107/4/21718047_1309743948YgcH.jpg" .load="imgResize(this, 650);" ;="" border="0"></a>
</div><br><br>8.代码<br>放在<br>http://code.google.com/p/kenvi-code-library/downloads/detail?name=wenwen.js&amp;can=2&amp;q=#makechanges<br>在firefox新建一个书签工具栏,代码前面加上javascript: ,贴进去,每次刷出题目的时候点击一次就可以了,速度快点可以多刷点题。出错的话,自己把题目和答案添加进去就Ok了。<br><br><br>9.如何使用<br>&nbsp;有几个网友找我说不会用,我把使用的方法说明一下<br><br>===================责任声明===================================<br>本代码仅供测试使用,如造成如何不良影响,本人概不负责,使用者自负!<br>===================责任声明===================================<br><br><br>更新了一下代码,最新的如下:<br><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li>var list = new Array();</li><li>
list = new Array();</li><li>
list = "题目:帮助网友解决问题大量问题,有机会获得什么?";</li><li>
list ="列出的都能获得";</li><li>
list = new Array();</li><li>
list = "题目:问问已解决问题突破一亿大关是在?";</li><li>
list ="2009年8月";</li><li>
list = new Array();</li><li>
list = "题目:在问问的提问获得回答后,如果要了解更多细节怎么办?";</li><li>
list ="使用【追问】功能问到底";</li><li>
list = new Array();</li><li>
list = "题目:问问在测试期间,第一个问题诞生在?";</li><li>
list ="2007年3月";</li><li>
list = new Array();</li><li>
list = "题目:手机问问是什么时候推出的?";</li><li>
list ="2009年5月";</li><li>
list = new Array();</li><li>
list = "题目:问问学堂上线的时间是?";</li><li>
list ="2011年1月";</li><li>
list = new Array();</li><li>
list = "题目:问问已解决问题突破一亿大关是在?";</li><li>
list ="2009年8月";</li><li>
list = new Array();</li><li>
list = "题目:手机问问WAP2.0版本是在什么时候上线的?";</li><li>
list ="2010年10月";</li><li>
list = new Array();</li><li>
list = "题目:什么时候开始手机QQ能接收问问消息了?";</li><li>
list ="2010年8月";</li><li>
list = new Array();</li><li>
list = "题目:问问在测试期间,第一个用户诞生在?";</li><li>
list ="2007年3月";</li><li>
list = new Array();</li><li>
list = "题目:问问上的问题什么时候开始可以转播到微博的?";</li><li>
list ="2010年10月";</li><li>
list = new Array();</li><li>
list = "题目:第一个问问团队诞生于?";</li><li>
list ="2008年6月";</li><li>
list = new Array();</li><li>
list = "题目:问问首页是在什么时候改版的?";</li><li>
list ="2010年11月";</li><li>
list = new Array();</li><li>
list = "题目:问问管理员体系是什么时候建立的?";</li><li>
list ="2007年10月";</li><li>
list = new Array();</li><li>
list = "题目:手机问问回答中心上线的时间是?";</li><li>
list ="2011年5月";</li><li>
list = new Array();</li><li>
list = "题目:问问达人计划是什么时候开始的?";</li><li>
list ="2010年7月";</li><li>
list = new Array();</li><li>
list = "题目:问问副刊上线的时间是?";</li><li>
list ="2011年5月";</li><li>
list = new Array();</li><li>
list = "题目:微博问答是什么时候上线的?";</li><li>
list ="2011年4月";</li><li>
list = new Array();</li><li>
list = "题目:问问正式上线的时间是?";</li><li>
list ="2007年6月";</li><li>
list = new Array();</li><li>
list = "题目:第一个问问之星是什么时候诞生的?";</li><li>
list ="2008年12月";</li><li>
list = new Array();</li><li>
list = "题目:问问日刊上线的时间是?";</li><li>
list ="2009年10月";</li><li>
list = new Array();</li><li>
list = "题目:问问图标是在什么时候进驻手机腾讯网页首导航条的?";</li><li>
list ="2010年11月";</li><li>
list = new Array();</li><li>
list = "题目:问问达人计划是什么时候开始的?";</li><li>
list ="2010年7月";</li><li>
list = new Array();</li><li>
list = "题目:手机问问Iphone版上线的时间是?";</li><li>
list ="2011年3月";</li><li>
list = new Array();</li><li>
list = "题目:超级QQ用户什么时候开始可以通过手机短信收到问问消息了?";</li><li>
list ="2010年7月";</li><li>
list = new Array();</li><li>
list = "题目:帮助网友解决问题大量问题,有机会获得什么?";</li><li>
list ="列出的都能获得";</li><li>
list = new Array();</li><li>
list = "题目:问问在测试期间,第一个问题是什么时候被解决的?";</li><li>
list ="2007年3月";</li><li>
list = new Array();</li><li>
list = "题目:目前问问已经帮助中国网民解决了多少问题?";</li><li>
list ="1.4亿";</li><li>
list = new Array();</li><li>
list = "题目:在问问里面提问获得答案的平均时间是?";</li><li>
list ="5分钟";</li><li>
list = new Array();</li><li>
list = "题目:遇到专业问题,需要专业回答,在问问该怎么做?";</li><li>
list ="求助专家和团队都可以";</li><li>
list = new Array();</li><li>
list = "题目:问问的第一个管理员是?";</li><li>
list ="天涯客";</li><li>
list = new Array();</li><li>
list = "题目:在问问回答问题时,下列哪种情况会被扣积分和经验?";</li><li>
list ="列出的都能获得";</li><li>
list = new Array();</li><li>
list = "题目:手机问问感恩回馈用户活动的举办时间是?";</li><li>
list ="2010年12月";</li><li>
list = new Array();</li><li>
list = "题目:在问问的提问获得回答后,如果要了解更多细节怎么办?";</li><li>
list ="使用【追问】功能问到底";</li><li>
list = new Array();</li><li>
list = "题目:问问月刊叫什么名字?";</li><li>
list ="问问之声";</li><li>
list = new Array();</li><li>
list = "题目:超级QQ用户什么时候开始可以通过手机短信收到问问消息了?";</li><li>
list ="2010年7月";</li><li>
list = new Array();</li><li>
list = "题目:下列哪些物品不能通过问问积分兑换?";</li><li>
list ="列出的都能获得";</li><li>
list = new Array();</li><li>
list = "题目:问问项目组成立的时间是?";</li><li>
list ="2006年7月";</li><li>
list = new Array();</li><li>
list = "题目:问问用户可以通过QQ展现自己的提问是在?";</li><li>
list ="2007年7月";</li><li>
list = new Array();</li><li>
list = "题目:手机问问团队功能上线的时间是?";</li><li>
list ="2011年2月";</li><li>
list = new Array();</li><li>
list = "题目:问问现在的界面是在什么时候最终确定的?";</li><li>
list ="2006年12月";</li><li>
list = new Array();</li><li>
list = "题目:什么时候开始手机QQ空间中能显示自己和好友的问问动态?";</li><li>
list ="2010年9月";</li><li>
list = new Array();</li><li>
list = "题目:问问知识频道上线的时间是?";</li><li>
list ="2010年6月";</li><li>
list = new Array();</li><li>
list = "题目:如果您精通某个专业领域,渴望帮助4亿问问网友解决问题,您可以?";</li><li>
list ="即可申请专家也可加入团队";</li><li>
list = new Array();</li><li>
list = "题目:第一个问问之星是谁?";</li><li>
list ="塔羅笙女";</li><li>
list = new Array();</li><li>
list = "题目:已经有非常多的网友使用过问问,具体是多少?";</li><li>
list ="4亿";</li><li>
list = new Array();</li><li>
list = "题目:在问问回答问题能得到什么?";</li><li>
list ="列出的都能获得";</li><li>
list = new Array();</li><li>
list = "题目:问问知识频道上线的时间是?";</li><li>
list ="2010年6月";</li><li>
list = new Array();</li><li>
list = "题目:什么时候开始可以通过手机完成问问任务了?";</li><li>
list ="2010年7月";</li><li>
list=new Array();</li><li>
list="题目:遇到问题找到答案的最快方法是?";</li><li>
list="三种方法都可以";</li><li>
<br></li><li>
<br></li><li>
var lilist = window.document.getElementById("contentWrap").getElementsByTagName("li");</li><li>
var title = window.document.getElementById("quesTitle").innerHTML;</li><li>
var qid = window.document.getElementById("qId").value;</li><li>
var aid=-1;</li><li>
var answer = null;</li><li>
var i;</li><li>
<br></li><li>
<br></li><li>
for(i=0;i&lt;50;i++){</li><li>
        if(title == list){</li><li>
           answer=list;</li><li>
           break;</li><li>
       }</li><li>
        }</li><li>
<br></li><li>
var j= 0 ;</li><li>
for(j=0;j&lt;lilist.length;j++){</li><li>
       <br></li><li>
   var tmp = lilist.getElementsByTagName("span").innerHTML;</li><li>
   <br></li><li>
   var str = new String(tmp);</li><li>
<br></li><li>
   if(str.substring(2,tmp.length)==answer){</li><li>
             <br></li><li>
                   QzApp.answerQ(qid,j);</li><li>
      break;</li><li>
   }</li><li>
}</li><li>
<br></li><li>
if(answer ==null ||j&gt;=lilist.length){</li><li>
        alert("error");</li><li>
        }</li></ol></div><br>(1) 在firfox上新建书签<br><a href="attachment/201107/4/21718047_1309767902kATl.jpg" target="_blank"><img src="attachment/201107/4/21718047_1309767902kATl.jpg" border="0"></a><br>javascript:后面是上面的代码,保存即可。注意一定要是在工具栏上的书签,可以提高速度。<br>效果如下:<br>
<br><div align="center"><a href="attachment/201107/4/21718047_1309768389EN9K.jpg" target="_blank"><img src="attachment/201107/4/21718047_1309768389EN9K.jpg" border="0"></a><br></div><div align="center"><b>每次答题只需点击answer这个书签就好了。</b><br></div>(2)刷分,本工具只对问问知多少的测试有效,有兴趣的可以收集状元堂的答案,挑战更高分。<br><u>在新标签页中打开随堂测试的页面,这步一定要做,否则不起作用。</u><br>刷分开始,出题目的时候,点击刚才建立的那个书签就可以了,会自动提交答案的,具体能刷到多少看自己的反应速度了。目前最高纪录是77。<br><br><br>好了,就这么多了,明天是最后一天了,祝大家顺利完成任务。<br>
页: [1]
查看完整版本: Bookmarklet 问问学堂刷分攻略(图文教学版)