百度企业信用js加密研究

一、简单说明

      企业相关信息对于预测企业发展状况十分重要。基于公司业务,最近分析企业信息查询网站,了解了很多相关的网站,有全国企业信用信息公示天眼查企查查启信宝水滴信用百度企业信用阿土伯等企业查询网站。今天以百度企业信用为例,研究这个网站的js反爬措施

二、发现问题   

     通过在搜索框中输入小米科技有限责任公司,得到企业列表页面

     公司详情页面url为:

    发现url中有关键标识pid,似乎是js生成的。如果我们能够生成pid参数,是不是就能少发送次请求,直接通过url拿到详情页公司信息。想象很丰富,现实很残酷啊!再次请求就能发现,每次生成的pid参数都是变化的,不过也无伤大雅,只是多发送一次请求。

     进入到详情页面,关键性信息全都是ajax动态加载,这样拿到完整信息发送的请求大量增加,相对的大大减少分析数据时间,

    进一步分析所有ajax请求,发现一个令人激动的现象,所有ajax请求url两个关键参数是一样的,例如基本信息和变更记录的url

     我们只需要拿到pid和tot两个关键参数,岂不是可以拿到所有的公司信息!接下来开始我们的js研究破解之路

三、分析破解js

     pid和tot参数似乎不是简单的基于加密算法生成的,我们在全局搜索找到生成参数的js,并在ch'rome中调试生成过程。

 

    经过一番艰苦的奋斗,终于不负苦心人。终于找到了,pid在详情页面请求的js中

     tk的生成同样存在

    再次刷新,发现和前面一篇的openlaw网站加密类似,tk的生成每次都在变化,所以不能单纯的通过python生成jk抓取数据。使用PyExecJS(Python3)运行js生成必要数据。避免麻烦直接上代码吧!

import re
import time
import requests
from lxml import etree
from utils.get_proxy import func_proxy
from utils.headers import headers
import execjs
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# 禁用安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

ip_list = []
ip_list.append(func_proxy())
resp = requests.get(url="https://xin.baidu.com/s?q=%E5%B0%8F%E7%B1%B3%E7%A7%91%E6%8A%80&t=0", headers=headers, proxies=ip_list[0], verify=False)
response = resp.content.decode()
html = etree.HTML(response)
url = "https://xin.baidu.com" + html.xpath('//*[@class="zx-list-wrap"]/div[1]//a[@class="zx-list-item-url"]/@href')[0]
resp = requests.get(url, headers=headers, proxies=ip_list[0], verify=False)
text = resp.text
response = resp.content.decode()
html2 = etree.HTML(response)
d = html2.xpath('//*[@id="baiducode"]/text()')[0]
pid = eval(re.findall(r'"pid":(.*?)\,.*?"defTags"', text, re.S)[0])
id1, att = re.findall(r"document\.getElementById\('(.*?)'\)\.getAttribute\('(.*?)'\)", text)[0]
tk_func = "function mix(" +re.findall(r'mix\((.*?)\(function', text, re.S)[0]
'//*[@id="baiducode"]/text()'
print(tk_func)
tk = re.findall(att + r'="(.*?)"\>', text)[0]
print(tk, d)
tk = execjs.compile(tk_func).call('mix', tk, d)
print(tk)
time1 = int(time.time() * 1000)
url1 = "https://xin.baidu.com/detail/basicAjax?pid={}&tot={}&_={}".format(pid, tk, time1)
resp1 = requests.get(url1, headers=headers, proxies=ip_list[0])
print(resp1.content.decode('unicode_escape'))

得到的结果如下:

{'http': 'http://42.232.197.9:26360'}
function mix(tk, bid) {var tk = tk.split("").reverse().join("");return tk.substring(0, tk.length - bid.length);}
626216235492OUQmETa1XojxMQSJt*Fll8xus-CsToUa42yy 294532612626
yy24aUoTsC-sux8llF*tJSQMxjoX1aTEmQUO
{"status":0,"msg":"","data":{"entLogo":"\/static\/pc\/photo\/logo.png","shareLogo":"https:\/\/ts.bdimg.com\/biz\/ecom\/vmp\/zx_ent_logo_default@2x.png","entName":"小米科技有限责任公司","bdCode":294532612626,"openStatus":"开业","entType":"有限责任公司(自然人投资或控股)","isClaim":4,"claimUrl":"-","benchMark":true,"regNo":"91110108551385082Q","orgNo":"55138508-2","taxNo":"110108551385082","scope":"技术开发;货物进出口、技术进出口、代理进出口;销售通讯设备、厨房用品、卫生用品(含个人护理用品)、日用杂货、化妆品、医疗器械I类、II类、避孕器具、玩具、体育用品、文化用品、服装鞋帽、钟表眼镜、针纺织品、家用电器、家具(不从事实体店铺经营)、花、草及观赏植物、不再分装的包装种子、照相器材、工艺品、礼品、计算机、软件及辅助设备、珠宝首饰、食用农产品、宠物食品、电子产品、摩托车、电动车、自行车及零部件、智能卡、五金交电(不从事实体店铺经营)、建筑材料(不从事实体店铺经营);维修仪器仪表;维修办公设备;承办展览展示活动;会议服务;筹备、策划、组织大型庆典;设计、制作、代理、发布广告;摄影扩印服务;文艺演出票务代理、体育赛事票务代理、展览会票务代理、博览会票务代理;手机技术开发;手机生产、手机服务(限海淀区永捷北路2号二层经营);从事互联网文化活动;出版物零售;出版物批发;销售第三类医疗器械;销售食品;零售药品;广播电视节目制作。(企业依法自主选择经营项目,开展经营活动;从事互联网文化活动、出版物批发、出版物零售、销售食品、广播电视节目制作、零售药品、销售第三类医疗器械以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事本市产业政策禁止和限制类项目的经营活动。)","regAddr":"北京市海淀区清河中街68号华润五彩城购物中心二期13层","legalPerson":"雷军","startDate":"2010-03-03","openTime":"2010-03-03 至 2030-03-02","annualDate":"2018-06-20","regCapital":"185,000万(元)","industry":"其他科技推广和应用服务业","telephone":"6060****-1000","district":"北京市海淀区","authority":"北京市工商行政管理局海淀分局","realCapital":"-","orgType":"企业法人","scale":"-","directors":[{"name":"雷军","gender":"未知","title":"董事长","img":"\/static\/pc\/photo\/directors.png"},{"name":"林斌","gender":"未知","title":"董事","img":"\/static\/pc\/photo\/directors.png"},{"name":"刘芹","gender":"未知","title":"董事","img":"\/static\/pc\/photo\/directors.png"},{"name":"许达来","gender":"未知","title":"董事","img":"\/static\/pc\/photo\/directors.png"},{"name":"黎万强","gender":"未知","title":"监事","img":"\/static\/pc\/photo\/directors.png"},{"name":"雷军","gender":"未知","title":"经理","img":"\/static\/pc\/photo\/directors.png"}],"shares":[{"name":"雷军","type":"自然人股东","img":"\/static\/pc\/photo\/shares.png","amount":"143,934万(元)"},{"name":"黎万强","type":"自然人股东","img":"\/static\/pc\/photo\/shares.png","amount":"18,724万(元)"},{"name":"洪锋","type":"自然人股东","img":"\/static\/pc\/photo\/shares.png","amount":"18,623万(元)"},{"name":"刘德","type":"自然人股东","img":"\/static\/pc\/photo\/shares.png","amount":"3,718万(元)"}],"districtCode":"1004:110108"}}

本博客仅用于学习研究,切勿用于商业用途

尊重原创,转载请注明,谢谢!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值