潭州课堂25班:Ph201805201 爬虫基础 第十四课 js破解 (课堂笔记)


打断点
找要的数据

鼠标的点击事件


新浪微博登录
表单提交分析 :

先佃输入错误密码开始调式

f10 往下走,
f11 进入函数
sh + f11 跳出函数
# -*- coding: utf-8 -*-
# 斌彬电脑
# @Time : 2018/9/20 0020 4:30 # 新浪js分析 import requests
import base64
import time
import re
import json
import rsa
import binascii class WeiboLogin(object):
def __init__(self, username, password):
self.username = self.encrypt_username(username)
self.password = password
self.session = requests.session()
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"} def pre_login(self):
params = {
"entry": "weibo",
"callback": "sinaSSOController.preloginCallBack",
"su": self.username,
"rsakt": "mod",
"checkpin": "1",
"client": "ssologin.js(v1.4.19)",
"_": int(time.time() * 1000)
} url = 'https://login.sina.com.cn/sso/prelogin.php?'
response = self.session.get(url, headers=self.headers, params=params)
json_data = re.search(r'preloginCallBack\((.*?)\)', response.text).group(1)
return json.loads(json_data) def login(self, pre_login_data):
data = {
"entry": "weibo",
"gateway": "1",
"from": "",
"savestate": "7",
"qrcode_flag": "false",
"useticket": "1",
"pagerefer": "",
"vsnf": "1",
"su": self.username,
"service": "miniblog",
"servertime": pre_login_data['servertime'],
"nonce": pre_login_data['nonce'],
"pwencode": "rsa2",
"rsakv": pre_login_data['rsakv'],
"sp": self.encrypt_password(self.password, pre_login_data['pubkey'], pre_login_data['servertime'],
pre_login_data['nonce']),
"sr": "1920*1080",
"encoding": "UTF-8",
"prelt": "49",
"url": "https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack",
"returntype": "META"
}
url = "https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)"
response = self.session.post(url, headers=self.headers, data=data)
return response.content.decode('gbk') def houxu_login(self, login_response):
first_url = re.search(r'location.replace\("(.*?)"\)', login_response).group(1)
response = self.session.get(first_url, headers=self.headers).content.decode('gbk') all_url = re.search(r'arrURL":\["(.*?)"\]', response).group(1)
all_url = all_url.split('","')
data = "&callback=sinaSSOController.doCrossDomainCallBack&" + "scriptId=ssoscript1&" + "client=ssologin.js(v1.4.19)&" + "_=" + str(
int(time.time() * 1000))
for url in all_url:
url = url.replace('\\', '')
self.session.get(url + data, headers=self.headers) def encrypt_password(self, password, pubkey, servertime, nonce):
my_password = str(servertime) + '\t' + str(nonce) + '\n' + str(password)
publickey = rsa.PublicKey(int(pubkey, 16), int('10001', 16))
return binascii.b2a_hex(rsa.encrypt(my_password.encode(), publickey)).decode() def encrypt_username(self, username):
return base64.b64encode(username.encode()) def yanzheng(self):
resp = self.session.get('https://weibo.com/wnanbei/home', headers=self.headers)
print(resp.text) def __call__(self, *args, **kwargs):
json_data = self.pre_login()
login_response = self.login(json_data)
self.houxu_login(login_response)
self.yanzheng() if __name__ == "__main__":
my_login = WeiboLogin('账号', '密码')
my_login()
潭州课堂25班:Ph201805201 爬虫基础 第十四课 js破解 (课堂笔记)的更多相关文章
- 潭州课堂25班:Ph201805201 爬虫基础 第十五课 js破解 二 (课堂笔记)
PyExecJs使用 PyExecJS是Ruby的ExecJS移植到Python的一个执行JS代码的库. 安装 pip install PyExecJS 例子 >>> import ...
- 潭州课堂25班:Ph201805201 爬虫基础 第十二课 点触验证码二 (课堂笔记)
为上次代码添加 模拟人操作 的鼠标的移动轨迹 # -*- coding:utf-8 -*- # 斌彬电脑 # @Time : 2018/9/14 0014 上午 8:08 from selenium ...
- 潭州课堂25班:Ph201805201 爬虫基础 第十课 图像处理- 极验验证码 (课堂笔记)
用 python 的 selenium 访问 https://www.huxiu.com/ 自动通过验证码 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 20 ...
- 潭州课堂25班:Ph201805201 爬虫高级 第十二 课 Scrapy-redis分布 项目实战 (课堂笔记)
建代理池, 1,获取多个网站的免费代理IP, 2,对免费代理进行检测,>>>>>携带IP进行请求, 3,检测到的可用IP进行存储, 4,实现api接口,方便调用, 5,各 ...
- 潭州课堂25班:Ph201805201 django 项目 第二十六课 docker简介 (课堂笔记)
官方文档: https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository 1,更新下sudo apt-ge ...
- 潭州课堂25班:Ph201805201 django 项目 第二十四课 文章主页 多级评论数据库设计 ,后台代码完成 (课堂笔记)
加载新闻评论功能 1.分析 业务处理流程: 判断前端传的新闻id是否为空,是否为整数.是否不存在 请求方法:GET url定义:'/news/<int:news_id>' 请求参数:url ...
- 潭州课堂25班:Ph201805201 django 项目 第十八课 前台 注解 (课堂笔记)
在静态文件 js/user上当下,的 auth.js 文件中 $(function () { let $username = $('#user_name'); // 选择id为user_name的网页 ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)
index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
随机推荐
- 使用Jyhon脚本和PMI模块监控WAS性能数据
使用Jyhon脚本和PMI模块监控WAS性能数据的优点有: 1.可以使用非交互的方式远程获取数据 2.不需要图形化模块支持 3.对各种was版本的兼容性较高 4.使用方便,官方自带 缺点也有很多: 1 ...
- 转载:使用Nginx的必备软件(1.3.2)《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19612.html 如果要使用Nginx的常用功能,那么首先需要确保该操作系统上至少安装了如下软件. (1)GCC编译器 GCC(GN ...
- 图解修改Maven本地仓库存储路径
1 从Maven中心仓库下载到本地的jar包的默认存放在"${user.home}/.m2/repository"中,${user.home}表示当前登录系统的用户目录(如&quo ...
- 转:vue+element实现树形组件
项目中需要用到树形组件,在网上发现一个用vue+element实现的树形组件,现在记录下: demo地址:https://github.com/wilsonIs/vue-treeSelect
- java selenium操作safari
SafariDriver是一个Safari浏览器的扩展.和Firefox类似,在selenium-safari-driver-xxx.jar包中org.openqa.selenium.safari路径 ...
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)
先来回顾一下昨天的内容 黏包现象粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全相 ...
- python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)
一.函数的初始 比如python没有len()方法,如何求字符串的长度使用for循环 s = 'fdshfeigjoglfkldsja' count = 0 for i in s: count += ...
- ERP产品采购申请管理(三十八)
BLL层代码: public class BioPurchaseBLL { /// <summary> /// 购进申请添加 /// </summary> /// <pa ...
- Ajax异步验证登陆或者注册
首先介绍一个不错的学习Ajax的中文网站:http://www.w3school.com.cn/ajax/index.asp AJAX = 异步 JavaScript 和 XML.详细介绍见上面的网址 ...
- asp.net core 微信APP支付(扫码支付,H5支付,公众号支付,app支付)之4
微信app支付需要以下参数,类封装如下 public class WxPayModel { /// <summary> /// 应用ID /// </summary> publ ...