爬虫js逆向系列
我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现。我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路。怎么突破的,遇到这个问题怎么思考,尝试的方法有哪些。这样就可以有的放矢。希望对大家有用

爬虫认知
在程序猿所有的方向中,爬虫是离money最近的一个方向,你的明白?而且爬虫可发展的方向很多,前可走大数据,人工智能,后可转后端,还有就是安全领域。而且爬虫做得好,要求的技术栈还是比较全面的。如果你对爬虫有兴趣,欢迎加V:13809090874,一起沟通交流

免责申明:
此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除

上面一篇我们说完了请求参数的破解,用我们模拟的请求链接+固定的cookies就可以通过代码的形式访问接口了。但有一个问题就是cookies是有失效期的,过一段时间,cookies就不能用了,我们必须得去破解登录的问题,然后建立自己的cookies池,才能真正实现自动化抓取。

1. 先人工登录,观察一下需要什么

1.微信扫码登录

2. 账号密码登录

我们可以看到这里有三种登录方式:1.微信扫码登录,2.密码登录,3.短信登录。
这其中难度系数,估计大家也都清楚,微信扫码登录和短信登录是很麻烦的,需要一些第三方服务,这个以后再讲。这个平台,可以用密码登录,最好不过了。

我们点击登录后需要拖动滑块。这个滑块,大家在看js的时候,如果细心一点,可以看到这个网站是调用阿里的滑块的服务的。
以下我给出的也是阿里滑块的通用解决方案。

阿里滑块解决–selenium屏蔽webdriver

我们通过selenium去调用chrome的webdriver,然后模拟拖动滑块,是拖不过去的,因为阿里会对你是不是用了webdriver进行检测的。
废话不多说,上代码:

    def init_chrome_options(self,):chrome_options = webdriver.ChromeOptions()# 设置浏览器初始 位置x,y & 宽高x,ychrome_options.add_argument(f'--window-position={217},{172}')chrome_options.add_argument(f'--window-size={1200},{1000}')# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# window.navigator.webdriver还是返回True,当返回undefined时应该才可行。chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])# 关闭开发者模式chrome_options.add_experimental_option("useAutomationExtension", False)# 禁止图片加载# prefs = {"profile.managed_default_content_settings.images": 2}# chrome_options.add_experimental_option("prefs", prefs)# 设置中文chrome_options.add_argument('lang=zh_CN.UTF-8')# 更换头部chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"')path = './../chromedriver'driver = webdriver.Chrome(executable_path=path, options=chrome_options)driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",})return driver

这是我常用的selenium配置,拿走不谢。
加上这个配置,然后通过selenium去拖动滑块就可以。这个滑块直接滑到最右边就可以。没有路径,速度检测的。

    def login(self):c_list = []while 1:driver = self.init_chrome_options()try:url = 'https://xk.newrank.cn/?backUrl=https%3A%2F%2Fxk.newrank.cn%2Fdata%2F'driver.get(url)time.sleep(1)#获取登录元素,并输入账号密码driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]/div/div[2]/div/div[1]').click()driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]/div/div[2]/div/div[2]/div[2]/div[1]/input') \.send_keys('xxxxx')driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]/div/div[2]/div/div[2]/div[2]/div[2]/span/input') \.send_keys('xxxxx')time.sleep(1)#点击登录按钮driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div/div[2]/div/div[2]/div/div[2]/div[2]/div[4]/button').click()time.sleep(2)#获取滑块按钮slider = driver.find_element_by_id('nc_1_n1z')#拖动滑块action_chains = ActionChains(driver)action_chains.click_and_hold(slider).perform()action_chains.move_by_offset(xoffset=random.randint(380,450), yoffset=0).perform()# action_chains.release(slider).perform()time.sleep(3)alert = EC.alert_is_present()(driver)if alert:print('出现弹窗')alert.accept()try:WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'nr-pro-menu-wrap')))cookie = driver.get_cookies()except UnexpectedAlertPresentException:driver.switch_to.alert.accept()WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'nr-pro-menu-wrap')))cookie = driver.get_cookies()for item in cookie:c = "{}={}".format(item['name'],item['value'])c_list.append(c)cookiestr = ';'.join(c_list)print(cookiestr)if 'token' in cookiestr:self.redis_cli.lpush('ksxk_cookies',cookiestr)print('登录成功')breakelse:time.sleep(1)except:traceback.print_exc()

等这10个网站的爬虫研究完,会针对所有的登录问题,滑块问题,js混淆的问题等出一个垂直系列,敬请期待

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

js逆向爬虫实战之快手第三方平台之获取登录cookies!相关推荐

  1. python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...

  2. js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知 在程序猿所有的方向中,爬虫是离money最近的一个方向,你 ...

  3. QQ音乐JS逆向爬虫,我用python全都爬!

    爬虫高级必然JS逆向,QQ音乐爬虫就是一个很好的练手,读完学会了直接在你女朋友面前装一手,读完你将收获到,QQ音乐JS逆向,sign参数获取,songmid参数获取,vkey参数获取,selenium ...

  4. 公众号第三方平台开发 获取 component_verify_ticket

    8.推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_veri ...

  5. js逆向加密五邑大学教务系统密码AES实现模拟登录(仅供参考)

    最近下班无聊,就看了一下之前写的教务系统模拟登录代码(python-爬虫),整体逻辑大概自己总结了一下: 1.请求验证码图片. 2.对输入的密码进行加密. 3.封装账号,密码,验证码,发送post请求 ...

  6. 牛逼了!100份Python爬虫实战源码+视频,开放获取

    这是之前总结的一些Python爬虫实战源码和视频,另外还总结了一些Python学习的知识手册,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左 ...

  7. js逆向爬虫入门-02.STEAM平台模拟登录逆向

    目录 逆向过程 python代码 git仓库    https://gitee.com/cycle1/py_re_js.git 逆向过程 打开steam网页登录页面,输入伪账号密码找一下接口,可以发现 ...

  8. 手把手操作JS逆向爬虫入门(一)

    本文爬取的网站如下(可以找解密工具解码) aHR0cHM6Ly9uZXdyYW5rLmNuLw== 爬取的内容为网站的资讯情报版块的新闻资讯 鼠标点击翻页,在开发者工具中查看请求包,很容看出请求地址和 ...

  9. js逆向常用加密 + 微信公众号平台试练

    文章目录 js常见的加密方式 Md5加密 DES/AES 加密 RSA加密 微信公众号平台js算法改写 js常见的加密方式 常见的加密算法基本分为这几类: 线性散列算法(签名算法) MD5 md2 m ...

最新文章

  1. 院士领衔,大咖云集!航天智慧物流单项赛决赛倒计时2天!
  2. Google 鼓励的 13 条代码审查标准,建议收藏!
  3. Oracle 双机热备 镜像 纯软 实战 配置教程 配置手册
  4. UA MATH566 统计理论2 点估计基础
  5. Qt5应用改变窗口大小时出现黑影
  6. kafka创建topic命令_0748-5.14.4-Kafka的扩容和缩容
  7. java写七彩文字_【PS精选案例教程】创建一个漂亮的七彩文字
  8. c语言数据类型_C语言基础数据类型
  9. 遍历矩阵每一行穷举_[LeetCode] 566. 重塑矩阵
  10. 本科生手握十余篇SCI,达博士毕业要求后,他获顶级名校全奖直博offer
  11. sql 查出一张表中重复的所有记录数据并且删除
  12. $(...).nicescroll is not a function报错分析
  13. 博主已开启评论精选什么意思_什么叫独立站?
  14. monitorServer IBM Tivoli Enterprise Monitor Server
  15. html生成邮件签名之路(一)
  16. rimraf : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\rimraf.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
  17. android 闪光灯程序,如何在Android中以编程方式打开前闪光灯?
  18. 为Windows 7的winsxs目录瘦身,谨慎。
  19. css 对checkbox样式进行修改
  20. 防范映像劫持(IFEO HIJACK)

热门文章

  1. pyspark学习之——逻辑回归、模型选择与调参
  2. 苹果手机几月份最便宜_ios苹果签名多少钱?苹果什么签名最便宜?
  3. 【Kettle】 数据转换的基本操作
  4. c语言摄影测量共线方程,摄影测量中的共线条件方程
  5. Hbuilder调出颜色选择板
  6. MySQL高可用集群方案优劣对比
  7. 利用Google Sites制作个人主页
  8. 能用android做什么管理系统,Android设备Root以后可以做些什么?
  9. windows下mysql初始密码设置
  10. 前端实现带二维码的工厂物料标签,发票生成以及打印(vue框架),以及监听浏览器打印事件的钩子函数