首先贴上爬取网址 http://datamining.comratings.com/exam
查看元素发现里面js如下:


eval(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[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('l E(a){5 b=9.q;5 c=b.G("; ");M(5 i=0;i<c.D;i++){5 d=c[i].G("=");j(a==d[0]){g d[1]}}g""}m=E(\'m\');5 7="Q+/=";K=R.N;l r(a){5 b,i,k;5 c,e,n;k=a.D;i=0;b="";O(i<k){c=a.o(i++)&P;j(i==k){b+=7.8(c>>2);b+=7.8((c&p)<<4);b+="==";s}e=a.o(i++);j(i==k){b+=7.8(c>>2);b+=7.8(((c&p)<<4)|((e&A)>>4));b+=7.8((e&B)<<2);b+="=";s}n=a.o(i++);b+=7.8(c>>2);b+=7.8(((c&p)<<4)|((e&A)>>4));b+=7.8(((e&B)<<2)|((n&S)>>6));b+=7.8(n&L)}g b}l H(){5 w=f.10||9.v.z||9.u.z;5 h=f.11||9.v.C||9.u.C;j(w*h<=12){g I}5 x=f.13;5 y=f.Z;j(x+w<=0||y+h<=0||x>=f.t.W||y>=f.t.V){g I}g X}l J(){j(H()){}Y{5 a="";a="T="+r(m.U(1,3))+"; F=/";9.q=a;a="e="+r(m)+"; F=/";9.q=a;f.14(K)}}J();',62,67,'|||||var||encoderchars|charAt|document|||||c2|window|return|||if|len|function|session|c3|charCodeAt|0x3|cookie|f1|break|screen|body|documentElement||||clientWidth|0xf0|0xf|clientHeight|length|getCookie|path|split|findDimensions|true|reload|url|0x3f|for|href|while|0xff|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|location|0xc0|c1|substr|height|width|false|else|screenY|innerWidth|innerHeight|120000|screenX|open'.split('|'),0,{}))

一看就是很懵逼,不知道写的什么 。于是笔者开始百度,碰到一个博客说看见eval 就变成console.log 然后用谷歌浏览器控制台console.log一下

下面那串代码我格式化了一下 发现了新天地

function getCookie(a) {var b = document.cookie;var c = b.split("; ");for (var i = 0; i < c.length; i++) {var d = c[i].split("=");if (a == d[0]) {return d[1]}}return ""
}
session = getCookie('session');
var encoderchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
url = location.href;function f1(a) {var encoderchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var b, i, len;var c, c2, c3;len = a.length;i = 0;b = "";while (i < len) {c = a.charCodeAt(i++) & 0xff;if (i == len) {b += encoderchars.charAt(c >> 2);b += encoderchars.charAt((c & 0x3) << 4);b += "==";break}c2 = a.charCodeAt(i++);if (i == len) {b += encoderchars.charAt(c >> 2);b += encoderchars.charAt(((c & 0x3) << 4) | ((c2 & 0xf0) >> 4));b += encoderchars.charAt((c2 & 0xf) << 2);b += "=";break}c3 = a.charCodeAt(i++);b += encoderchars.charAt(c >> 2);b += encoderchars.charAt(((c & 0x3) << 4) | ((c2 & 0xf0) >> 4));b += encoderchars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));b += encoderchars.charAt(c3 & 0x3f)}return b
}function findDimensions() {var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;if (w * h <= 120000) {return true}var x = window.screenX;var y = window.screenY;if (x + w <= 0 || y + h <= 0 || x >= window.screen.width || y >= window.screen.height) {return true}return false
}function reload() {if (findDimensions()) {} else {var a = "";a = "c1=" + f1(session.substr(1, 3)) + "; path=/";document.cookie = a;a = "c2=" + f1(session) + "; path=/";document.cookie = a;window.open(url)}
}
reload();

观察代码发现 function f1(a) 是将session 加密生成一个c1 和 c2 字符串 放入cookie 传给服务端
所以我们在爬虫时 也要移植这个js代码到python中 生成同样的c1和c2
这个代码看懂了也能自己移植 笔者独立完成时使用的是js2py的模块 我们在创建test.js文件将f1 的js 粘贴到文件中

req_url = 'http://datamining.comratings.com/exam?tdsourcetag=s_pctim_aiomsg'
s = requests.session()
headers = {'Cookies':'session=f8d667c6b0edd7524d37aaae917806cf; c1=OGQ2;      c2=ZjhkNjY3YzZiMGVkZDc1MjRkMzdhYWFlOTE3ODA2Y2Y='
}
html = s.get(req_url).text
mycookie = s.cookies['session']
print(html)
with open('test.js','r') as f:html2 = f.read()
myfunction=js2py.eval_js(html2) #将js 代码直接导入
c2 = myfunction(mycookie)         #传入cookie中存放的session
c1 = myfunction(mycookie[1:4]) #观察格式代码js 不难看出需要session 的1到3四个字符s.cookies['c1'] = c1  #设置cookie内容
s.cookies['c2'] = c2
response2 = s.get("http://datamining.comratings.com/exam3") #访问目标网站

“http://datamining.comratings.com/exam3” 这个url 是跳转页面后查看页面源码 不难发现里面ifram 标签的src 是exam3

至此我们成功跳转到目标网站
同时这里面也用到了 request.session 读者自行百度
此页面 刷新一次才会出现c1,c2 必然会用request.session 保持访问时同一次 不会中断连接

python解决js加密问题相关推荐

  1. Python 爬虫js加密破解(四) 360云盘登录password加密

    登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...

  2. python爬取网易云音乐_爬取网易云音乐评论(一)——用python执行JS脚本

    抓包分析 可以发现网页是post请求,表单数据有两个参数params和encSecKey,应该是经过js加密所得 因此在 Initiator 栏里找到对应的js,也就是core...js,点击打开查看 ...

  3. python代码封装加密_python对煎蛋网加密处理方式

    原标题:python对煎蛋网加密处理方式 最近一直有朋友问我改版的煎蛋网妹子图怎么爬,因为他们花费精力结果抓了一整个文件夹的防盗图.我之前在很久以前的一篇博客说过,对于这种js处理的网页,要想抓取到网 ...

  4. python爬虫:关于解决request.get和点击查看网页源代码的内容不同的问题//及大神版js加密参数获取教程指路

    首先声明:爬虫小白,虽然爬过几个网站,但是知识几乎都是实践中获取,如果以下说的不对的,请多指正,谢谢!谨此给和我一样的小白提供一个解题思路! 目录 问题背景 菜鸡版解决方案 大神版js加密参数获取教程 ...

  5. python爬虫--破解js加密:kankan登录破解

    这一系列文章旨在解决python 爬虫过程中遇到的各种反爬,从简单到复制,是个进阶的过程.如果对你有帮助,欢迎关注. 今天要破解的网站是天天看看(http://www.kankan.com/)的登录, ...

  6. python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向

    中国空气质量在线监测平台(https://www.aqistudy.cn/html/city_detail.html)在众多的练习中,关闭了前台数据信息的展示,也就是说现在网页是这样的: 但我们主要学 ...

  7. python js加密解密_AES用cryptojs加密,用python解密加密Ciph

    使用js CryptoJS加密和使用python解密时遇到问题密码密码在 这是我在js中的实现, 用加密消息附加iv并用base64编码 var message='Secreat Message to ...

  8. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

  9. post 传递参数中包含 html 代码解决办法,js加密,.net解密

    今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式 ...

最新文章

  1. python 函数返回值的特殊情况
  2. asch相关的linux基础知识分享
  3. 定时器工作原理及初值快速计算
  4. 学习笔记:Windows 下Keras安装和配置指南
  5. eclipse安装lombok插件 ,但是:lombok注解不起作用(亲测有效!)
  6. decode函数吗 jsp_JSP中js传递和解析URL参数以及中文转码和解码问题
  7. 结巴分词优点_中文分词概述及结巴分词原理
  8. mysql 5.7 mirror_Centos7 Docker离线部署Mysql5.7
  9. Pandas 读写数据
  10. Exchange 迁移 Public Folder 公共文件夹
  11. Eclipse SVN插件Subclipse和Subversive简介
  12. 小凡虚拟机桥接到pc步骤实施
  13. win10 系统把装在c盘的软件移到其他盘的方法
  14. modelica学习笔记4
  15. ptp输出内容包含什么_解剖PTP协议
  16. Android实用视图动画及工具系列之九:漂亮的图片选择器,高性能防崩溃图片选择工具
  17. Leco题目:整数反转
  18. HDU2063-过山车[Hopcroft-Carp]二分图匹配
  19. Ubuntu 的 openssl 安全问题提醒 USN-2192-1
  20. JSP的四大作用域及属性范围

热门文章

  1. 内蒙职高计算机专业分数线,内蒙古:本科三批和高职高专批录取分数线公布
  2. java设计模式之享元设计模式
  3. 美团CTO罗道锋离职 王慧文将兼任基础研发平台负责人
  4. 初阶后的C++ 第七节 —— 多态
  5. 开发常用linux命令
  6. 坚持每天工作学习一小时
  7. 深度学习在美团点评的应用
  8. 自动化抓取stackoverflow问题列表
  9. 服务器离家出走怎么修复,减肥减到“大姨妈”离家出走?教你几招把它找回来!...
  10. 您的计算机无法启动后,在多次尝试后,你的电脑上的操作系统仍无法启动