├── .gitattributes ├── 126邮箱_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 17173_只完成密码加密__后续有滑动验证码 ├── get_pwd.js └── login.py ├── 189邮箱_已完成 ├── get_pwd.js └── login.py ├── 360登录中心_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 37玩_已完成 └── login.py ├── 39健康_已完成 ├── 39jk.js ├── data.txt ├── login.py └── new_login.py ├── 51游戏_已完成 ├── data.txt ├── get_pwd.js ├── jquery.js └── login.py ├── 58同城_已完成 ├── captcha.jpg ├── data.txt ├── get_pwd.js └── login.py ├── README.md ├── YY直播_只完成了密码加密_后续有滑动验证 ├── get_pwd.js └── login.py ├── __init__.py ├── bilibili_后续有点选验证 ├── get_pwd.js └── login.py ├── login.py ├── ua.html ├── 一加手机_密码加密已完成_后续有极验验证 ├── get_pwd.js ├── get_ua.js └── login.py ├── 中国移动_已完成 ├── captcha.jpg ├── data.txt ├── get_pwd.js └── login.py ├── 九游_加密完成_非法登录 ├── captcha.png ├── get_pwd.js └── login.py ├── 今日头条_已完成 ├── login.py ├── one.jpg ├── two.png ├── 头条号 │ ├── data.txt │ └── post_data.py └── 抓取新闻 │ ├── get_signature.js │ └── getdata.py ├── 企查查_未完成_只有滑动验证需要破解 ├── data.txt ├── login.py └── um.js ├── 优酷视频_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 使用selenium获取ua ├── __init__.py ├── get_ua.py ├── ua.html └── ua.js ├── 信息公示系统_进行中 └── get_data.py ├── 凤凰网_已完成 ├── captcha.png └── login.py ├── 去哪儿_已完成 ├── captcha.jpg └── login.py ├── 启信宝_未开始 ├── get_pwd.js └── login_demo.py ├── 和讯网__validate未生成_后续有点选验证 ├── data.txt ├── get_pwd.js ├── jsencrypt.js └── login.py ├── 咪咕视频登录_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 唯品会_未能成功登陆 ├── get_pwd.js └── login.py ├── 喜马拉雅_js未能成功加密 ├── get_pwd.js └── login.py ├── 国美_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 大众点评_滑动验证 ├── get_pwd.js └── login.py ├── 大麦网_只做了密码加密_有滑动验证 ├── get_pwd.js └── login.py ├── 天眼查_已完成 └── __init__.py ├── 好豆菜谱_后续有滑动验证 ├── data.txt ├── get_pwd.js └── login.py ├── 宜贷网_$未定义 ├── get_pwd.js └── login.py ├── 小米商城_已完成 └── login.py ├── 开源中国_需请求google的参数 ├── data.txt ├── data2.txt ├── get_pwd.js └── login.py ├── 微博_未完成 ├── get_pwd.js └── login.py ├── 恒信易贷_已完成 └── login.py ├── 房天下_已完成 ├── RSA.min.js ├── bsckurl.js └── fang_js.py ├── 搜房帮_已完成 └── login.py ├── 搜狐_已完成 ├── get_pwd.js └── login.py ├── 搜狐视频_cookies有问题 ├── data.txt ├── get_pwd.js └── login.py ├── 搜狗翻译 ├── __init__.py ├── b2.js └── get_data.py ├── 斗鱼_密码加密完成_但后续有点选验证码 ├── get_pwd.js └── login.py ├── 新华电子邮局_已完成 ├── captcha.jpg ├── data.txt ├── get_pwd.js └── login.py ├── 易车网_加密完成_公共参数缺失 ├── captcha.jpg ├── data.txt ├── get_pwd.js └── login.py ├── 有赞网_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 淘宝_已完成 ├── __init__.py ├── __pycache__ │ └── login.cpython-36.pyc ├── get_data │ ├── __init__.py │ ├── get_data.py │ └── mode.html ├── get_pwd.js ├── login.py ├── login_data.txt ├── taobao.js └── ua.html ├── 爱企查_已完成 ├── a.jpg ├── check_img.jpg ├── data.txt ├── headers.txt └── login.py ├── 爱应用_已完成 ├── get_pwd.js └── login.py ├── 猫眼_js加密已完成_后续有滑动验证 ├── get_pwd.js ├── js.js └── login.py ├── 珍爱网_密码加密已完成_后续有滑动验证码 ├── JSEncrypt.js └── login.py ├── 百家号_未完成 ├── data.txt └── login.py ├── 空中网_已完成 ├── captcha.jpg ├── get_pwd.js ├── js.js └── login.py ├── 筑龙学社_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 粉笔网_已完成 ├── get_pwd.js └── login.py ├── 纵横小说网_密码加密破解_后续有极验 ├── get_pwd.js └── login.py ├── 网易_已完成 ├── data.txt ├── get_pwd.js └── login.py ├── 美团_密码加密完成_h5Fingerprint参数未生成 ├── data.txt ├── get_h5.js ├── get_pwd.js ├── h5.html └── login.py ├── 老k游戏_已完成 ├── captcha.jpg ├── get_pwd.js └── login.py ├── 联通营业厅_已完成 ├── get_pwd.js └── login.py ├── 聚惠商城_已完成 ├── get_pwd.js └── login.py ├── 芒果TV_已完成 ├── data.txt └── login.py ├── 虎牙_只做了密码加密_其他的后续补充 ├── get_pwd.js └── login.py ├── 豆瓣_滑动验证码 └── login.py ├── 途牛_已完成 ├── captcha_img.png ├── get_pwd.js └── login.py ├── 逗游网_已完成 ├── get_pwd.js └── login.py ├── 通用的js头.js ├── 金牛理财_已完成 ├── captcha.jpg ├── jsencrypt.js └── login.py ├── 问卷星_已完成 └── login.py ├── 阿里云_完成密码加密 ├── data.txt ├── login.py └── ua.js ├── 风行网_已完成 └── login.py ├── 飞卢小说网_已完成 ├── captcha.jpg └── login.py └── 魅族_密码加密_后续有点击验证 ├── get_pwd.js └── login.py /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Python 2 | *.html linguist-language=Python -------------------------------------------------------------------------------- /126邮箱_已完成/data.txt: -------------------------------------------------------------------------------- 1 | channel: 0 2 | d: 10 3 | domains: "163.com,126.com" 4 | l: 0 5 | pd: mail126 6 | pkid: TVNAeBP 7 | pw: YJTBzFz+9DFlQNt6KVKv2EoI4GCYgY/JrhreQ1lYaUxyyznTdhvMsz21xZoDnBWUMPB2jmSpz77acOFVXrrrowxTgy4Lo+SAvJ2xIqIJeQuWXlwwQhgpRRj11zQJwC2zIblx26s25dFJaGbDfbHel8IAm/H9pH99f5MjruqEr0E= 8 | pwdKeyUp: 1 9 | rtid: RjVS0z92wTk1bfyBDWpPLARgLYJNbdQD 10 | t: 1604045358847 11 | tk: 4809fb6d34306e58ef4ed931adbc629f 12 | topURL: https://email.163.com/?utm_source=baidu1 13 | un: 12578432122@126.com -------------------------------------------------------------------------------- /126邮箱_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://email.163.com/?utm_source=baidu1 3 | Author:jing 4 | Modify:2020/10/30 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import json 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.login_url = "https://passport.126.com/dl/l" 24 | 25 | def get_pwd(self): 26 | 27 | with open('get_pwd.js', encoding='utf-8') as f: 28 | js_pwd = f.read() 29 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 30 | return pwd 31 | 32 | # 获取tk 参数 33 | def _get_tk(self): 34 | response = self.sess.get("https://passport.126.com/dl/gt?un={}&pkid=TVNAeBP&pd=mail126&channel=0&topURL=https%3A%2F%2Femail.163.com%2F%3Futm_source%3Dbaidu1&rtid=OqTZMiuAGwt83GDbC5ww9rUdbpEoOwcY&nocache=1604038751935".format(self.user)).json() 35 | return response["tk"] 36 | 37 | def load_data(self, path): 38 | data = {} 39 | with open(path, "rt", encoding="utf-8") as f: 40 | read = f.readlines() 41 | for line in read: 42 | split_ = line.split(":") 43 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 44 | return data 45 | 46 | def login_(self): 47 | # 加载cookies 48 | self.sess.get( 49 | "https://passport.126.com/dl/ini?pd=mail126&pkid=TVNAeBP&pkht=email.163.com&channel=0&topURL=https%3A%2F%2Femail.163.com%2F%3Futm_source%3Dbaidu1&rtid=myPP7bk70x1vvyiQ4NlaLybqHKRLjXxi&nocache=1604044910172") 50 | 51 | tk = self._get_tk() 52 | data = self.load_data("data.txt") 53 | data["tk"] = tk 54 | data["un"] = self.user 55 | data["t"] = str(int(time.time()*1000)) 56 | 57 | pwd = self.get_pwd() 58 | 59 | data["pw"] = pwd 60 | res = self.sess.post(self.login_url, json=data) 61 | 62 | 63 | if __name__ == '__main__': 64 | user = "" 65 | pwd = "" 66 | 67 | login = Login(user, pwd) # TODO: 输入账号&密码 68 | login.login_() -------------------------------------------------------------------------------- /17173_只完成密码加密__后续有滑动验证码/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.17173.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | Notes: 此网站的破解已经在另一个项目中使用selenium破解成功 - https://github.com/onepureman/selenium_login_cracking/tree/jing/17173_已完成 6 | """ 7 | import execjs 8 | import requests 9 | 10 | 11 | class Login(): 12 | 13 | def __init__(self, user, pwd): 14 | """ 15 | :param user: 16 | :param pwd: 17 | """ 18 | self.user = user 19 | self.pwd = pwd 20 | 21 | def get_pwd(self): 22 | with open('./get_pwd.js', encoding='utf-8') as f: 23 | js_pwd = f.read() 24 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 25 | return pwd 26 | 27 | def login_(self): 28 | pwd = self.get_pwd() 29 | print(pwd) 30 | 31 | 32 | if __name__ == '__main__': 33 | login = Login("222", "333") 34 | login.login_() -------------------------------------------------------------------------------- /189邮箱_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://webmail30.189.cn/w2/ 3 | Author:jing 4 | Modify:2020/12/9 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def get_pwd(self): 22 | with open('get_pwd.js', encoding='utf-8') as f: 23 | js_pwd = f.read() 24 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd) 25 | return pwd 26 | 27 | def login_(self): 28 | pwd = self.get_pwd() 29 | print(pwd) 30 | 31 | 32 | if __name__ == '__main__': 33 | user = "" 34 | pwd = "" 35 | 36 | login = Login(user, pwd) # TODO: 输入账号&密码 可能会出现 填写验证码的情况 可参照本项目中的其他含有验证码的网站 如 58同城 37 | login.login_() 38 | -------------------------------------------------------------------------------- /360登录中心_已完成/data.txt: -------------------------------------------------------------------------------- 1 | src: pcw_home 2 | from: pcw_home 3 | charset: UTF-8 4 | requestScema: https 5 | quc_sdk_version: 6.8.5 6 | quc_sdk_name: jssdk 7 | o: sso 8 | m: login 9 | lm: 0 10 | captFlag: 1 11 | rtype: data 12 | validatelm: 0 13 | isKeepAlive: 1 14 | captchaApp: i360 15 | userName: 16 | smDeviceId: 17 | type: normal 18 | account: 19 | password: 20 | captcha: 21 | token: a18a5109595f31d8 22 | proxy: https://i.360.cn/psp_jump.html 23 | callback: QiUserJsonp484218891 24 | func: QiUserJsonp484218891 -------------------------------------------------------------------------------- /360登录中心_已完成/get_pwd.js: -------------------------------------------------------------------------------- 1 | 2 | function t(e, t) { 3 | var n = (65535 & e) + (65535 & t) 4 | , i = (e >> 16) + (t >> 16) + (n >> 16); 5 | return i << 16 | 65535 & n 6 | } 7 | function n(e, t) { 8 | return e << t | e >>> 32 - t 9 | } 10 | function i(e, i, r, o, a, c) { 11 | return t(n(t(t(i, e), t(o, c)), a), r) 12 | } 13 | function r(e, t, n, r, o, a, c) { 14 | return i(t & n | ~t & r, e, t, o, a, c) 15 | } 16 | function o(e, t, n, r, o, a, c) { 17 | return i(t & r | n & ~r, e, t, o, a, c) 18 | } 19 | function a(e, t, n, r, o, a, c) { 20 | return i(t ^ n ^ r, e, t, o, a, c) 21 | } 22 | function c(e, t, n, r, o, a, c) { 23 | return i(n ^ (t | ~r), e, t, o, a, c) 24 | } 25 | function s(e, n) { 26 | e[n >> 5] |= 128 << n % 32, 27 | e[(n + 64 >>> 9 << 4) + 14] = n; 28 | var i, s, u, l, f, p = 1732584193, d = -271733879, h = -1732584194, m = 271733878; 29 | for (i = 0; i < e.length; i += 16) 30 | s = p, 31 | u = d, 32 | l = h, 33 | f = m, 34 | p = r(p, d, h, m, e[i], 7, -680876936), 35 | m = r(m, p, d, h, e[i + 1], 12, -389564586), 36 | h = r(h, m, p, d, e[i + 2], 17, 606105819), 37 | d = r(d, h, m, p, e[i + 3], 22, -1044525330), 38 | p = r(p, d, h, m, e[i + 4], 7, -176418897), 39 | m = r(m, p, d, h, e[i + 5], 12, 1200080426), 40 | h = r(h, m, p, d, e[i + 6], 17, -1473231341), 41 | d = r(d, h, m, p, e[i + 7], 22, -45705983), 42 | p = r(p, d, h, m, e[i + 8], 7, 1770035416), 43 | m = r(m, p, d, h, e[i + 9], 12, -1958414417), 44 | h = r(h, m, p, d, e[i + 10], 17, -42063), 45 | d = r(d, h, m, p, e[i + 11], 22, -1990404162), 46 | p = r(p, d, h, m, e[i + 12], 7, 1804603682), 47 | m = r(m, p, d, h, e[i + 13], 12, -40341101), 48 | h = r(h, m, p, d, e[i + 14], 17, -1502002290), 49 | d = r(d, h, m, p, e[i + 15], 22, 1236535329), 50 | p = o(p, d, h, m, e[i + 1], 5, -165796510), 51 | m = o(m, p, d, h, e[i + 6], 9, -1069501632), 52 | h = o(h, m, p, d, e[i + 11], 14, 643717713), 53 | d = o(d, h, m, p, e[i], 20, -373897302), 54 | p = o(p, d, h, m, e[i + 5], 5, -701558691), 55 | m = o(m, p, d, h, e[i + 10], 9, 38016083), 56 | h = o(h, m, p, d, e[i + 15], 14, -660478335), 57 | d = o(d, h, m, p, e[i + 4], 20, -405537848), 58 | p = o(p, d, h, m, e[i + 9], 5, 568446438), 59 | m = o(m, p, d, h, e[i + 14], 9, -1019803690), 60 | h = o(h, m, p, d, e[i + 3], 14, -187363961), 61 | d = o(d, h, m, p, e[i + 8], 20, 1163531501), 62 | p = o(p, d, h, m, e[i + 13], 5, -1444681467), 63 | m = o(m, p, d, h, e[i + 2], 9, -51403784), 64 | h = o(h, m, p, d, e[i + 7], 14, 1735328473), 65 | d = o(d, h, m, p, e[i + 12], 20, -1926607734), 66 | p = a(p, d, h, m, e[i + 5], 4, -378558), 67 | m = a(m, p, d, h, e[i + 8], 11, -2022574463), 68 | h = a(h, m, p, d, e[i + 11], 16, 1839030562), 69 | d = a(d, h, m, p, e[i + 14], 23, -35309556), 70 | p = a(p, d, h, m, e[i + 1], 4, -1530992060), 71 | m = a(m, p, d, h, e[i + 4], 11, 1272893353), 72 | h = a(h, m, p, d, e[i + 7], 16, -155497632), 73 | d = a(d, h, m, p, e[i + 10], 23, -1094730640), 74 | p = a(p, d, h, m, e[i + 13], 4, 681279174), 75 | m = a(m, p, d, h, e[i], 11, -358537222), 76 | h = a(h, m, p, d, e[i + 3], 16, -722521979), 77 | d = a(d, h, m, p, e[i + 6], 23, 76029189), 78 | p = a(p, d, h, m, e[i + 9], 4, -640364487), 79 | m = a(m, p, d, h, e[i + 12], 11, -421815835), 80 | h = a(h, m, p, d, e[i + 15], 16, 530742520), 81 | d = a(d, h, m, p, e[i + 2], 23, -995338651), 82 | p = c(p, d, h, m, e[i], 6, -198630844), 83 | m = c(m, p, d, h, e[i + 7], 10, 1126891415), 84 | h = c(h, m, p, d, e[i + 14], 15, -1416354905), 85 | d = c(d, h, m, p, e[i + 5], 21, -57434055), 86 | p = c(p, d, h, m, e[i + 12], 6, 1700485571), 87 | m = c(m, p, d, h, e[i + 3], 10, -1894986606), 88 | h = c(h, m, p, d, e[i + 10], 15, -1051523), 89 | d = c(d, h, m, p, e[i + 1], 21, -2054922799), 90 | p = c(p, d, h, m, e[i + 8], 6, 1873313359), 91 | m = c(m, p, d, h, e[i + 15], 10, -30611744), 92 | h = c(h, m, p, d, e[i + 6], 15, -1560198380), 93 | d = c(d, h, m, p, e[i + 13], 21, 1309151649), 94 | p = c(p, d, h, m, e[i + 4], 6, -145523070), 95 | m = c(m, p, d, h, e[i + 11], 10, -1120210379), 96 | h = c(h, m, p, d, e[i + 2], 15, 718787259), 97 | d = c(d, h, m, p, e[i + 9], 21, -343485551), 98 | p = t(p, s), 99 | d = t(d, u), 100 | h = t(h, l), 101 | m = t(m, f); 102 | return [p, d, h, m] 103 | } 104 | function u(e) { 105 | var t, n = ""; 106 | for (t = 0; t < 32 * e.length; t += 8) 107 | n += String.fromCharCode(e[t >> 5] >>> t % 32 & 255); 108 | return n 109 | } 110 | function l(e) { 111 | var t, n = []; 112 | for (n[(e.length >> 2) - 1] = void 0, 113 | t = 0; t < n.length; t += 1) 114 | n[t] = 0; 115 | for (t = 0; t < 8 * e.length; t += 8) 116 | n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32; 117 | return n 118 | } 119 | function f(e) { 120 | return u(s(l(e), 8 * e.length)) 121 | } 122 | function p(e, t) { 123 | var n, i, r = l(e), o = [], a = []; 124 | for (o[15] = a[15] = void 0, 125 | r.length > 16 && (r = s(r, 8 * e.length)), 126 | n = 0; n < 16; n += 1) 127 | o[n] = 909522486 ^ r[n], 128 | a[n] = 1549556828 ^ r[n]; 129 | return i = s(o.concat(l(t)), 512 + 8 * t.length), 130 | u(s(a.concat(i), 640)) 131 | } 132 | function d(e) { 133 | var t, n, i = "0123456789abcdef", r = ""; 134 | for (n = 0; n < e.length; n += 1) 135 | t = e.charCodeAt(n), 136 | r += i.charAt(t >>> 4 & 15) + i.charAt(15 & t); 137 | return r 138 | } 139 | function h(e) { 140 | return unescape(encodeURIComponent(e)) 141 | } 142 | function m(e) { 143 | return f(h(e)) 144 | } 145 | function g(e) { 146 | return d(m(e)) 147 | } 148 | function v(e, t) { 149 | return p(h(e), h(t)) 150 | } 151 | function q(e, t) { 152 | return d(v(e, t)) 153 | } 154 | getpwd = function(e, t) { 155 | return t ? q(t, e) : g(e) 156 | } -------------------------------------------------------------------------------- /360登录中心_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.360.cn/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | import re 13 | 14 | 15 | class Login(object): 16 | 17 | def __init__(self, user, pwd): 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = requests.session() 21 | self.sess.headers = { 22 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 QIHU 360SE", 23 | "Host": "login.360.cn" 24 | } 25 | self.login_url = "https://login.360.cn/" 26 | 27 | # 获取 token 28 | def get_token(self): 29 | url = "https://login.360.cn/?func=jQuery112407017940677562093_1602486129494&src=pcw_home&from=pcw_home&cha" 30 | 31 | r = requests.get(url) 32 | token = re.findall("\"token\":\"(.*?)\"", r.content.decode()) 33 | return token 34 | 35 | 36 | def load_data(self, path): 37 | data = {} 38 | with open(path, "rt", encoding="utf-8") as f: 39 | read = f.readlines() 40 | for line in read: 41 | split_ = line.split(":") 42 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 43 | return data 44 | 45 | def get_pwd(self): 46 | with open('./get_pwd.js', encoding='utf-8') as f: 47 | js_pwd = f.read() 48 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 49 | return pwd 50 | 51 | def login_(self): 52 | self.sess.get("https://www.360.cn/") 53 | data = self.load_data("data.txt") 54 | pwd = self.get_pwd() 55 | data["password"] = pwd 56 | data["token"] = self.get_token() 57 | 58 | r = self.sess.post(self.login_url, data=data) 59 | 60 | # # 验证是否登陆成功 61 | # yanzheng_url = "https://login.360.cn/?o=sso&m=info&requestScema=https&callback=jQuery110207241101365568958_1602486378473&_=" + str( 62 | # round(time.time() * 1000)) 63 | # response = self.sess.get(yanzheng_url) 64 | # print(response.content.decode()) 65 | # # TODO: 未能成功验证, ,没有获取到 用户名称 66 | 67 | 68 | if __name__ == '__main__': 69 | user = "" 70 | pwd = "" 71 | 72 | login = Login(user, pwd) # TODO: 输入账号&密码 73 | login.login_() 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /37玩_已完成/login.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | Base_Url: https://www.37.com/ 4 | Author: jing 5 | Modify: 2020/10/22 6 | """ 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def get_pwd(self): 23 | js_pwd = """ 24 | var ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 25 | function __rsa(str) { 26 | var out, i, len; 27 | var c1, c2, c3; 28 | len = str.length; 29 | i = 0; 30 | out = ""; 31 | while (i < len) { 32 | c1 = str.charCodeAt(i++) & 0xff; 33 | if (i == len) { 34 | out += ch.charAt(c1 >> 2); 35 | out += ch.charAt((c1 & 0x3) << 4); 36 | out += "=="; 37 | break 38 | } 39 | c2 = str.charCodeAt(i++); 40 | if (i == len) { 41 | out += ch.charAt(c1 >> 2); 42 | out += ch.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); 43 | out += ch.charAt((c2 & 0xF) << 2); 44 | out += "="; 45 | break 46 | } 47 | c3 = str.charCodeAt(i++); 48 | out += ch.charAt(c1 >> 2); 49 | out += ch.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); 50 | out += ch.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); 51 | out += ch.charAt(c3 & 0x3F) 52 | } 53 | return out 54 | } 55 | function getpwd(a) { 56 | var maxPos = ch.length - 2 57 | , w = []; 58 | for (i = 0; i < 15; i++) { 59 | w.push(ch.charAt(Math.floor(Math.random() * maxPos))); 60 | if (i === 7) { 61 | w.push(a.substr(0, 3)) 62 | } 63 | if (i === 12) { 64 | w.push(a.substr(3)) 65 | } 66 | } 67 | return __rsa(w.join("")) 68 | } 69 | 70 | 71 | """ 72 | 73 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 74 | return pwd 75 | 76 | def login_(self): 77 | pwd = self.get_pwd() 78 | 79 | url = "https://my.37.com/api/login.php?callback=jQuery18306406318829314788_1601282675051&action=login&login_account={}&password={}&ajax=0&remember_me=1&save_state=1<ype=1&tj_from=100&s=1&tj_way=1&_=1601282679088".format( 80 | self.user,pwd) 81 | r = requests.get(url) 82 | print(r.status_code) 83 | print(r.content.decode()) 84 | 85 | 86 | if __name__ == '__main__': 87 | user = "" 88 | pwd = "" 89 | 90 | login = Login(user, pwd) # TODO: 输入账号&密码 91 | login.login_() 92 | 93 | 94 | print('\u767b\u5f55\u6210\u529f') 95 | 96 | -------------------------------------------------------------------------------- /39健康_已完成/data.txt: -------------------------------------------------------------------------------- 1 | accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01 2 | accept-encoding: gzip, deflate, br 3 | accept-language: zh-CN,zh;q=0.9 4 | referer: https://my.39.net/passport/login.aspx 5 | sec-fetch-mode: cors 6 | sec-fetch-site: same-origin 7 | user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 8 | x-requested-with: XMLHttpRequest -------------------------------------------------------------------------------- /39健康_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: http://www.39.net/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def load_data(self,path): 22 | data = {} 23 | with open(path, "rt", encoding="utf-8") as f: 24 | read = f.readlines() 25 | for line in read: 26 | split_ = line.split(":") 27 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 28 | return data 29 | 30 | def get_pwd(self, input_): 31 | js_pwd = """ 32 | 33 | function getpwd(a) { 34 | var f, b = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"), 35 | c = new Array(116, 120, 122, 51, 57), d = encodeURIComponent(a), e = ""; 36 | for (i = 0; i < d.length; i++) f = c[i % 5], s = String.fromCharCode(d.charCodeAt(i) ^ f), e += b[s.charCodeAt(0) >> 4] + b[15 & s.charCodeAt(0)]; 37 | return e 38 | } 39 | """ 40 | 41 | pwd = execjs.compile(js_pwd).call("getpwd", input_) 42 | return pwd 43 | 44 | def login_(self): 45 | user = self.get_pwd(self.user) 46 | pwd = self.get_pwd(self.pwd) 47 | data = self.load_data("data.txt") 48 | 49 | r = requests.get( 50 | "https://my.39.net/post.ashx?callback=jQuery17206856937338735567_1602577896209&action=jsonploginf0&uname={}&pwd={}&safecode=&app=1&_=1602577911928".format( 51 | user, pwd), headers=data) 52 | print(r.content) 53 | 54 | 55 | if __name__ == '__main__': 56 | user = "adffgadf" 57 | pwd = "222222" 58 | 59 | login = Login(user, pwd) # TODO: 输入账号&密码 60 | login.login_() 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /39健康_已完成/new_login.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | Base_Url: http://www.39.net/ 4 | Author: jing 5 | Modify: 2021/10/08 6 | Node: 更新-- 已没有密码等加密, 只是构建cookies与请求的参数,此代码只是成功登录并没有cookies保持,建议使用session 7 | """ 8 | 9 | from lxml import etree 10 | import requests 11 | 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.url = "https://passport.39.net/Account/Login" 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = requests.session() 21 | self.headers = { 22 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", 23 | } 24 | 25 | def login_(self): 26 | 27 | res = requests.get(self.url) 28 | 29 | html = etree.HTML(res.content.decode()) 30 | __RequestVerificationToken = html.xpath("//input[@name='__RequestVerificationToken']/@value")[0] 31 | 32 | self.headers["cookie"] = res.headers["Set-Cookie"] 33 | 34 | data = { 35 | "ReturnUrl": "", 36 | "__RequestVerificationToken": __RequestVerificationToken, 37 | "Username": self.user, 38 | "Password": self.pwd, 39 | "LoginType": "Account", 40 | "RememberLogin": "false" 41 | 42 | } 43 | 44 | res = requests.post(self.url, data=data, headers=self.headers) 45 | print(res) 46 | print(res.text) 47 | 48 | 49 | if __name__ == '__main__': 50 | user = "" 51 | pwd = "" 52 | 53 | login = Login(user, pwd) # TODO: 输入账号&密码 54 | login.login_() 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /51游戏_已完成/data.txt: -------------------------------------------------------------------------------- 1 | callback: jQuery111105728217809844967_1605145451570 2 | passport_51_user: AIcYxPa8e+YVmXP5UcW2LQ== 3 | passport_51_password: AVSt8iu+13GbqKXfT0WRvQ== 4 | passport_cookie_login: 0 5 | from: www 6 | gourl: http://www.51.com/ 7 | passport_auto_login: 1 8 | passport_51_ishidden: 0 9 | chn: www 10 | ie: 0 11 | version: 2012 12 | passport_51_ajax: true 13 | passport_51_jsonp: 1 14 | aes: 2 15 | passport_51_user_ht: 14 16 | passport_51_password_ht: 11 17 | _: 1605145451578 -------------------------------------------------------------------------------- /51游戏_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://www.51.com/ 3 | Author:jing 4 | Modify:2021/01/25 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import re 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | 22 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 23 | "Accept-Encoding": "gzip, deflate", 24 | "Accept-Language": "zh-CN,zh;q=0.9", 25 | "Connection": "keep-alive", 26 | "Host": "passport.51.com", 27 | "Upgrade-Insecure-Requests": "1", 28 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 29 | 30 | } 31 | self.login_url = "" 32 | 33 | def load_data(self, path): 34 | data = {} 35 | with open(path, "rt", encoding="utf-8") as f: 36 | read = f.readlines() 37 | for line in read: 38 | split_ = line.split(":") 39 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 40 | return data 41 | 42 | def get_pwd(self, pwd,key, iv): 43 | with open('./get_pwd.js', encoding='utf-8') as f: 44 | js_pwd = f.read() 45 | pwd = execjs.compile(js_pwd).call("getpwd", pwd, key, iv) 46 | return pwd 47 | 48 | def login_(self): 49 | 50 | res = requests.get("http://www.51.com/") 51 | # print(self.sess.cookies) 52 | iv = re.findall(".*\|(.*?)\|iv\|", res.content.decode())[0] 53 | key = re.findall(".*\|(.*?)\|key\|", res.content.decode())[0] 54 | 55 | # # 设置cookies 56 | # two_t = int(time.time() * 1000) 57 | # self.sess.cookies["Hm_lvt_940aa8668c1606e3733aded32f601d5d"] = two_t 58 | # self.sess.cookies["Hm_lpvt_940aa8668c1606e3733aded32f601d5d"] = two_t 59 | 60 | # 加密账户 密码 61 | user = self.get_pwd(self.user, key, iv) 62 | pwd = self.get_pwd(self.pwd, key, iv) 63 | 64 | url ="http://passport.51.com/login/submit?callback=jQuery111105728217809844967_{}&passport_51_user={}&passport_51_password={}&passport_cookie_login=0&from=www&gourl=http%3A%2F%2Fwww.51.com%2F&passport_auto_login=1&passport_51_ishidden=0&chn=www&ie=0&version=2012&passport_51_ajax=true&passport_51_jsonp=1&aes=2&passport_51_user_ht={}&passport_51_password_ht={}&_={}".format(str(int(time.time() * 1000)), user, pwd, "jq", "j5", str(int(time.time() * 1000))) 65 | 66 | res = requests.get(url) 67 | print(res.content.decode()) 68 | 69 | 70 | if __name__ == '__main__': 71 | user = "" 72 | pwd = "" 73 | 74 | login = Login(user, pwd) # TODO: 输入账号&密码 75 | login.login_() 76 | -------------------------------------------------------------------------------- /58同城_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/58同城_已完成/captcha.jpg -------------------------------------------------------------------------------- /58同城_已完成/data.txt: -------------------------------------------------------------------------------- 1 | username: 1054545416 2 | password: 794d5534bfb5032a1fae5058b7d5d66428e1adb90e0e26e7e0cabe25245df934b27d578378cbf6434e7b2a74a128c7f39b55244d14633a98dfab729fc80349ca6c4addad10a3ef81112eb94738ba48ed54581b72e849fc6eae1eee97ba37f8b15393468ae7fd244b66a5ee2cc832c9b6e4e2abb61f77a54b2c81c15c5efe3c48 3 | token: Whck-x2Aw2YAQAQIicbrYjovgKHZmPl0 4 | source: 58-homepage-pc 5 | path: https%3A%2F%2Fbj.58.com%2F%3Fpts%3D1604039969308 6 | domain: 58.com 7 | finger2: zh-CN|24|1.5|12|2560_1440|2560_1400|-480|1|1|1|undefined|1|unknown|Win32|unknown|20|false|false|false|false|false|0_false_false|d41d8cd98f00b204e9800998ecf8427e|e3ae0e04402d1d2f7aa0d5ddc69e021f 8 | isremember: false 9 | autologin: false 10 | isredirect: false 11 | psdk-d: jsdk 12 | psdk-v: 1.0.6 13 | fingerprint: imkdQ0ok8DpDLN8P5LIOLjlKPuSQBcq0 14 | callback: SDK_CALLBACK_FUN.successFun -------------------------------------------------------------------------------- /58同城_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://bj.58.com/?utm_source=market&spm=u-LlFBrx8a1luDwQM.sgppzq_zbt 3 | Author: jing 4 | Modify: 2020/10/30 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import re 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | 24 | self.login_url = "https://passport.58.com/58/login/pc/dologin" 25 | 26 | def get_pwd(self): 27 | with open('./get_pwd.js', encoding='utf-8') as f: 28 | js_pwd = f.read() 29 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 30 | return pwd 31 | 32 | def get_token(self): 33 | path_time = str(int(time.time()*1000)) 34 | 35 | # 生成callback 36 | callback_js = """ 37 | function get_call(){ 38 | return "JsonpCallBack" + (new Date).getTime() + Math.floor(1e3 * Math.random()) 39 | } 40 | """ 41 | callback = execjs.compile(callback_js).call("get_call") 42 | 43 | # 获取cookies 44 | self.sess.get("https://passport.58.com/sec/58/fingerprint?source=58-homepage-pc&finger2=zh-CN%7C24%7C1.5%7C12%7C2560_1440%7C2560_1400%7C-480%7C1%7C1%7C1%7Cundefined%7C1%7Cunknown%7CWin32%7Cunknown%7C20%7Cfalse%7Cfalse%7Cfalse%7Cfalse%7Cfalse%7C0_false_false%7Cd41d8cd98f00b204e9800998ecf8427e%7Ce3ae0e04402d1d2f7aa0d5ddc69e021f&psdk-d=jsdk&psdk-v=1.0.6&callback=JsonpCallBack1604040163925934") 45 | # 生成请求地址 46 | url = "https://passport.58.com/58/login/init?source=58-homepage-pc&path=https%253A%252F%252Fbj.58.com%252F%253Fpts%253D{}&psdk-d=jsdk&psdk-v=1.0.6&callback=JsonpCallBack{}".format(path_time, callback) 47 | self.sess.headers["referer"]= "https://passport.58.com/login/?path=https%3A%2F%2Fbj.58.com%2F&source=58-homepage-pc&PGTID=0d100000-0000-1c0f-6f8d-1fbc67d111de&ClickID=2" 48 | response = self.sess.get(url) 49 | token = re.findall("\"token\":\"(.*?)\",", response.content.decode())[0] 50 | return token 51 | 52 | def load_data(self, path): 53 | data = {} 54 | with open(path, "rt", encoding="utf-8") as f: 55 | read = f.readlines() 56 | for line in read: 57 | split_ = line.split(":") 58 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 59 | return data 60 | 61 | def get_captcha(self): 62 | url = "https://passport.58.com/sec/58/validcode/get?vcodekey=4TqBiD9V__N-QpBd90dHqKLUZkRAPqm2&time=1604042990555" 63 | response = self.sess.get(url) 64 | 65 | with open("captcha.jpg", "wb") as f: 66 | f.write(response.content) 67 | 68 | def login_(self): 69 | data = self.load_data("data.txt") 70 | data["username"] = self.user 71 | data["path"] = 'https%3A%2F%2Fbj.58.com%2F%3Fpts%3D' + str(int(time.time()*1000)) 72 | data["vcodekey"] = "4TqBiD9V__N-QpBd90dHqKLUZkRAPqm2" 73 | pwd = self.get_pwd() 74 | data["password"] = pwd 75 | 76 | token = self.get_token() 77 | data["token"] = token 78 | 79 | response = self.sess.post(self.login_url, data=data) 80 | if "请输入图片验证码" in response.content.decode(): 81 | self.get_captcha() 82 | data["validcode"] = input("请输入验证码:") 83 | pprint(data) 84 | 85 | response = self.sess.post(self.login_url, data=data) 86 | print(response.content.decode()) 87 | 88 | 89 | else: 90 | print(response.content.decode()) 91 | 92 | 93 | if __name__ == '__main__': 94 | user = "" 95 | pwd = "" 96 | 97 | login = Login(user, pwd) # TODO: 输入账号&密码 98 | login.login_() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## #致力于各种网站的登陆的js破解,持续更新中。。。(由于工作时间关系,很多网站不能够一次性完成,会一直更新) 4 | (另:后期会补充各种网站数据的爬虫) 5 | 6 | ####目前主要破解网站登录的js加密,关于使用js破解点选验证还未涉及,目前破解这两种验证码主要是selenium,但是本人想要用js 进行破解,在研究js破解的同时也将会提供selenium的解决方案,请移步到本人的另一个项目中([点击进入项目,目前由于js破解验证码完成所以此项目不再更新](https://github.com/onepureman/selenium_login_cracking)) 7 | 8 | ### 有大牛或者有兴趣的可以交流指教一下,也可以私信我一起做一些学习性质的东西:[我的博客](https://blog.csdn.net/amanloveformi). 9 | 10 | 11 | 12 | 13 | # 天眼查滑动登录已破解,后续项目中的滑动验证等问题会一一更新 14 | 15 | 16 | 在此声明:本项目仅供学习交流,请勿商业用途,否则产生的后果由使用者承担! 17 | -------------------------------------------------------------------------------- /YY直播_只完成了密码加密_后续有滑动验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.yy.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def get_pwd(self): 23 | with open('./get_pwd.js', encoding='utf-8') as f: 24 | js_pwd = f.read() 25 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 26 | return pwd 27 | 28 | def login_(self): 29 | pwd = self.get_pwd() 30 | print(pwd) 31 | 32 | 33 | if __name__ == '__main__': 34 | user = "" 35 | pwd = "222222" 36 | 37 | login = Login(user, pwd) # TODO: 输入账号&密码 38 | login.login_() 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/__init__.py -------------------------------------------------------------------------------- /bilibili_后续有点选验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.bilibili.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def get_pwd(self): 23 | with open('./get_pwd.js', encoding='utf-8') as f: 24 | js_pwd = f.read() 25 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 26 | return pwd 27 | 28 | def login_(self): 29 | pwd = self.get_pwd() 30 | print(pwd) 31 | 32 | 33 | if __name__ == '__main__': 34 | user = "" 35 | pwd = "222222" 36 | 37 | login = Login(user, pwd) # TODO: 输入账号&密码 38 | login.login_() 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: 4 | Modify: 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.sess.headers = { 20 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 21 | } 22 | self.login_url = "" 23 | 24 | def load_data(self, path): 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def get_pwd(self): 34 | with open('./get_pwd.js', encoding='utf-8') as f: 35 | js_pwd = f.read() 36 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 37 | return pwd 38 | 39 | def login_(self): 40 | pwd = self.get_pwd() 41 | print(pwd) 42 | 43 | 44 | if __name__ == '__main__': 45 | user = "" 46 | pwd = "222222" 47 | 48 | login = Login(user, pwd) # TODO: 输入账号&密码 49 | login.login_() -------------------------------------------------------------------------------- /一加手机_密码加密已完成_后续有极验验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://id.oneplus.com/index.html?&callback=https%3A%2F%2Fwww.oneplus.com%2Fcn&language=zh-CN 3 | Author:jing 4 | Modify:2020/11/9 5 | """ 6 | 7 | import execjs 8 | import requests 9 | import json 10 | 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | self.sess = requests.session() 18 | self.sess.headers = { 19 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 20 | } 21 | self.login_url = "https://account.oneplus.com/cn/service/web/account/signIn" 22 | 23 | def get_pwd(self): 24 | with open('./get_pwd.js', encoding='utf-8') as f: 25 | js_pwd = f.read() 26 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 27 | return pwd 28 | 29 | def get_ua(self): 30 | with open('./get_ua.js', encoding='utf-8') as f: 31 | js_pwd = f.read() 32 | ua = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getua") 33 | return ua 34 | 35 | def login_(self): 36 | ua = self.get_ua() 37 | print(ua) 38 | self.sess.get("https://www.oneplus.com/cn") # 获取cookies 39 | # pwd = self.get_pwd() 40 | # data = { 41 | # "account": self.user, 42 | # "mc": "cn", 43 | # "qs": "callback=https%3A%2F%2Fmy.oneplus.com%2Fcn%2Forder%3Ffrom%3Dhead&app=10&client=1&state=&cc=cn&ts=1603434611649&sign=7a8f20ca1e74ed21ecb7af80bde8741b&from=null", 44 | # "rpd": pwd, 45 | # "vdata": "csessionid=0117s2gxgxya0KLW-E4W4nPd9loPJlpu7AsAlj12420rRvjQ-fs3z2xVRdjI5irgeV5Km4fNKUxCB-yV39ptmkzv0gAr0O8tIId3dMSMVprRhgj08S1T5hVVoDayX289iJ1yDmVDlQqlxePdOf5MvpFEiKXPasgCwiNzFyHCXwpiibe3feOXFDigU1rHrQP0VU4NSZrZlUUo2sM9IA_BjoHQ&sig=05a1C7nT4bR5hcbZlAujcdyYEVe0dtjASJkEwSnhCJynxqxoQqsreDc7ET8d7Xz46_Z0_oB-2fiiu464tAs8k3GxNyPidpllufr_4WP5HIjw19xL7VSPQ2vGrFCu_Zan3rseZIbE9wZ2dhSWieOZtSWzcrBMT4iPv-XYcmLOxVUnR25gV2cnzawF3F0VsUEt6xEc4O4H8SLwRI-Fjs9wRaTG_9Stbc5UPnCwfPB_hJhPyPuqhHIKg-Xq1epdkhFh7mExhygtd82qIZTMnCDt79IRrojpKgPvo8WuZ6tccYKmWmdZ5603OD8s5LrK6i3ZirrRmtCWxsOT_DqjZ8z7HmdC2DbJG9Rm1DIL4rmRz_DMwn1iZXL-g8-b7fd5_bGV2_9tVhGXuNzGoqpqPxvdaNIR7lj5PMEC7aMIdwlPReGamUkEaJ3qTp-vZklJTwLnGXd8bVTpFlcmeb9FntTQj3PFD7-cu8DHtJMRzYDXCbn74&token=FFFF00000000016BC05B%3A1603434612206%3A0.09860863878032888", 46 | # } 47 | # 48 | # res = self.sess.post(self.login_url, json=data) 49 | # print(res.content.decode()) 50 | 51 | 52 | if __name__ == '__main__': 53 | user = "" 54 | pwd = "1111222222" 55 | 56 | login = Login(user, pwd) # TODO: 输入账号&密码 57 | login.login_() 58 | -------------------------------------------------------------------------------- /中国移动_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/中国移动_已完成/captcha.jpg -------------------------------------------------------------------------------- /中国移动_已完成/data.txt: -------------------------------------------------------------------------------- 1 | accountType: 02 2 | account: 3 | password: 4 | pwdType: 03 5 | smsPwd: 6 | inputCode: 7 | backUrl: https://shop.10086.cn/mall_100_100.html?forcelogin=1 8 | rememberMe: 0 9 | channelID: 12002 10 | loginMode: 01 11 | protocol: https: 12 | timestamp: 1611307980829 -------------------------------------------------------------------------------- /中国移动_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://login.10086.cn/login.htm 3 | Author: jing 4 | Modify: 2021/01/25 5 | Notes: 本人使用qq邮箱验证登录 没有问题 出现 { **** "desc":"认证成功" ***} 等字样 6 | """ 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | from lxml import etree 13 | import re 14 | 15 | 16 | class Login(object): 17 | 18 | def __init__(self, user, pwd): 19 | self.user = user 20 | self.pwd = pwd 21 | self.sess = requests.session() 22 | self.sess.headers = { 23 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 24 | } 25 | self.login_url = "https://login.10086.cn/login.htm" 26 | 27 | def load_data(self, path): 28 | data = {} 29 | with open(path, "rt", encoding="utf-8") as f: 30 | read = f.readlines() 31 | for line in read: 32 | split_ = line.split(":") 33 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 34 | return data 35 | 36 | def get_pwd(self, pwd): 37 | with open('./get_pwd.js', encoding='utf-8') as f: 38 | js_pwd = f.read() 39 | pwd = execjs.compile(js_pwd).call("getpwd", pwd) 40 | return pwd 41 | 42 | def get_captcha(self): 43 | url = "https://login.10086.cn/captchazh.htm?type=12×tamp=" + str(int(time.time()*1000)) 44 | 45 | response = self.sess.get(url) 46 | 47 | with open("captcha.jpg", "wb") as f: 48 | f.write(response.content) 49 | 50 | def login_(self): 51 | 52 | response = self.sess.get('https://shop.10086.cn/i/?f=home&welcome=' + str(int(time.time()*1000))) 53 | html = etree.HTML(response.content.decode()) 54 | href = html.xpath("//a[@id='dropdownMenu2']/@href")[0] 55 | channelID = re.findall("channelID=(.*?)&", href)[0] 56 | backUrl = re.findall("backUrl=(.*)", href)[0] 57 | 58 | data = self.load_data("data.txt") 59 | data["timestamp"] = str(int(time.time() * 1000)) 60 | data["password"] = self.get_pwd(self.pwd) 61 | data["account"] = self.get_pwd(self.user) 62 | 63 | data["channelID"] = channelID 64 | data["backUrl"] = backUrl 65 | 66 | pprint(data) 67 | 68 | self.sess.post("https://login.10086.cn/checkUidAvailable.action") 69 | 70 | need_ve = self.sess.get("https://login.10086.cn/needVerifyCode.htm?accountType=02&account={}×tamp={}".format(self.user, str(int(time.time() * 1000)))).json() 71 | if need_ve["needVerifyCode"] == "1": 72 | self.get_captcha() 73 | data["inputCode"] = input("请输入验证码:") 74 | 75 | self.sess.headers["Host"] = "login.10086.cn" 76 | self.sess.headers["Origin"] = "https://login.10086.cn" 77 | self.sess.cookies["captchatype"] = "z" 78 | self.sess.headers["Referer"] = "https://login.10086.cn/login.html?channelID={}&backUrl={}?f=home&welcome={}".format(channelID, backUrl, str(int(time.time() * 1000))) 79 | 80 | print(self.sess.cookies) 81 | res = self.sess.post(self.login_url, data=data) 82 | 83 | print(res.content.decode()) 84 | 85 | 86 | if __name__ == '__main__': 87 | user = "" 88 | pwd = "" 89 | 90 | login = Login(user, pwd) # TODO: 输入账号&密码 91 | login.login_() 92 | -------------------------------------------------------------------------------- /九游_加密完成_非法登录/captcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/九游_加密完成_非法登录/captcha.png -------------------------------------------------------------------------------- /九游_加密完成_非法登录/get_pwd.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | !function(a) { 4 | "use strict"; 5 | function b(a, b) { 6 | var c = (65535 & a) + (65535 & b) 7 | , d = (a >> 16) + (b >> 16) + (c >> 16); 8 | return d << 16 | 65535 & c 9 | } 10 | function c(a, b) { 11 | return a << b | a >>> 32 - b 12 | } 13 | function d(a, d, e, f, g, h) { 14 | return b(c(b(b(d, a), b(f, h)), g), e) 15 | } 16 | function e(a, b, c, e, f, g, h) { 17 | return d(b & c | ~b & e, a, b, f, g, h) 18 | } 19 | function f(a, b, c, e, f, g, h) { 20 | return d(b & e | c & ~e, a, b, f, g, h) 21 | } 22 | function g(a, b, c, e, f, g, h) { 23 | return d(b ^ c ^ e, a, b, f, g, h) 24 | } 25 | function h(a, b, c, e, f, g, h) { 26 | return d(c ^ (b | ~e), a, b, f, g, h) 27 | } 28 | function i(a, c) { 29 | a[c >> 5] |= 128 << c % 32, 30 | a[(c + 64 >>> 9 << 4) + 14] = c; 31 | var d, i, j, k, l, m = 1732584193, n = -271733879, o = -1732584194, p = 271733878; 32 | for (d = 0; d < a.length; d += 16) 33 | i = m, 34 | j = n, 35 | k = o, 36 | l = p, 37 | m = e(m, n, o, p, a[d], 7, -680876936), 38 | p = e(p, m, n, o, a[d + 1], 12, -389564586), 39 | o = e(o, p, m, n, a[d + 2], 17, 606105819), 40 | n = e(n, o, p, m, a[d + 3], 22, -1044525330), 41 | m = e(m, n, o, p, a[d + 4], 7, -176418897), 42 | p = e(p, m, n, o, a[d + 5], 12, 1200080426), 43 | o = e(o, p, m, n, a[d + 6], 17, -1473231341), 44 | n = e(n, o, p, m, a[d + 7], 22, -45705983), 45 | m = e(m, n, o, p, a[d + 8], 7, 1770035416), 46 | p = e(p, m, n, o, a[d + 9], 12, -1958414417), 47 | o = e(o, p, m, n, a[d + 10], 17, -42063), 48 | n = e(n, o, p, m, a[d + 11], 22, -1990404162), 49 | m = e(m, n, o, p, a[d + 12], 7, 1804603682), 50 | p = e(p, m, n, o, a[d + 13], 12, -40341101), 51 | o = e(o, p, m, n, a[d + 14], 17, -1502002290), 52 | n = e(n, o, p, m, a[d + 15], 22, 1236535329), 53 | m = f(m, n, o, p, a[d + 1], 5, -165796510), 54 | p = f(p, m, n, o, a[d + 6], 9, -1069501632), 55 | o = f(o, p, m, n, a[d + 11], 14, 643717713), 56 | n = f(n, o, p, m, a[d], 20, -373897302), 57 | m = f(m, n, o, p, a[d + 5], 5, -701558691), 58 | p = f(p, m, n, o, a[d + 10], 9, 38016083), 59 | o = f(o, p, m, n, a[d + 15], 14, -660478335), 60 | n = f(n, o, p, m, a[d + 4], 20, -405537848), 61 | m = f(m, n, o, p, a[d + 9], 5, 568446438), 62 | p = f(p, m, n, o, a[d + 14], 9, -1019803690), 63 | o = f(o, p, m, n, a[d + 3], 14, -187363961), 64 | n = f(n, o, p, m, a[d + 8], 20, 1163531501), 65 | m = f(m, n, o, p, a[d + 13], 5, -1444681467), 66 | p = f(p, m, n, o, a[d + 2], 9, -51403784), 67 | o = f(o, p, m, n, a[d + 7], 14, 1735328473), 68 | n = f(n, o, p, m, a[d + 12], 20, -1926607734), 69 | m = g(m, n, o, p, a[d + 5], 4, -378558), 70 | p = g(p, m, n, o, a[d + 8], 11, -2022574463), 71 | o = g(o, p, m, n, a[d + 11], 16, 1839030562), 72 | n = g(n, o, p, m, a[d + 14], 23, -35309556), 73 | m = g(m, n, o, p, a[d + 1], 4, -1530992060), 74 | p = g(p, m, n, o, a[d + 4], 11, 1272893353), 75 | o = g(o, p, m, n, a[d + 7], 16, -155497632), 76 | n = g(n, o, p, m, a[d + 10], 23, -1094730640), 77 | m = g(m, n, o, p, a[d + 13], 4, 681279174), 78 | p = g(p, m, n, o, a[d], 11, -358537222), 79 | o = g(o, p, m, n, a[d + 3], 16, -722521979), 80 | n = g(n, o, p, m, a[d + 6], 23, 76029189), 81 | m = g(m, n, o, p, a[d + 9], 4, -640364487), 82 | p = g(p, m, n, o, a[d + 12], 11, -421815835), 83 | o = g(o, p, m, n, a[d + 15], 16, 530742520), 84 | n = g(n, o, p, m, a[d + 2], 23, -995338651), 85 | m = h(m, n, o, p, a[d], 6, -198630844), 86 | p = h(p, m, n, o, a[d + 7], 10, 1126891415), 87 | o = h(o, p, m, n, a[d + 14], 15, -1416354905), 88 | n = h(n, o, p, m, a[d + 5], 21, -57434055), 89 | m = h(m, n, o, p, a[d + 12], 6, 1700485571), 90 | p = h(p, m, n, o, a[d + 3], 10, -1894986606), 91 | o = h(o, p, m, n, a[d + 10], 15, -1051523), 92 | n = h(n, o, p, m, a[d + 1], 21, -2054922799), 93 | m = h(m, n, o, p, a[d + 8], 6, 1873313359), 94 | p = h(p, m, n, o, a[d + 15], 10, -30611744), 95 | o = h(o, p, m, n, a[d + 6], 15, -1560198380), 96 | n = h(n, o, p, m, a[d + 13], 21, 1309151649), 97 | m = h(m, n, o, p, a[d + 4], 6, -145523070), 98 | p = h(p, m, n, o, a[d + 11], 10, -1120210379), 99 | o = h(o, p, m, n, a[d + 2], 15, 718787259), 100 | n = h(n, o, p, m, a[d + 9], 21, -343485551), 101 | m = b(m, i), 102 | n = b(n, j), 103 | o = b(o, k), 104 | p = b(p, l); 105 | return [m, n, o, p] 106 | } 107 | function j(a) { 108 | var b, c = ""; 109 | for (b = 0; b < 32 * a.length; b += 8) 110 | c += String.fromCharCode(a[b >> 5] >>> b % 32 & 255); 111 | return c 112 | } 113 | function k(a) { 114 | var b, c = []; 115 | for (c[(a.length >> 2) - 1] = void 0, 116 | b = 0; b < c.length; b += 1) 117 | c[b] = 0; 118 | for (b = 0; b < 8 * a.length; b += 8) 119 | c[b >> 5] |= (255 & a.charCodeAt(b / 8)) << b % 32; 120 | return c 121 | } 122 | function l(a) { 123 | return j(i(k(a), 8 * a.length)) 124 | } 125 | function m(a, b) { 126 | var c, d, e = k(a), f = [], g = []; 127 | for (f[15] = g[15] = void 0, 128 | e.length > 16 && (e = i(e, 8 * a.length)), 129 | c = 0; 16 > c; c += 1) 130 | f[c] = 909522486 ^ e[c], 131 | g[c] = 1549556828 ^ e[c]; 132 | return d = i(f.concat(k(b)), 512 + 8 * b.length), 133 | j(i(g.concat(d), 640)) 134 | } 135 | function n(a) { 136 | var b, c, d = "0123456789abcdef", e = ""; 137 | for (c = 0; c < a.length; c += 1) 138 | b = a.charCodeAt(c), 139 | e += d.charAt(b >>> 4 & 15) + d.charAt(15 & b); 140 | return e 141 | } 142 | function o(a) { 143 | return unescape(encodeURIComponent(a)) 144 | } 145 | function p(a) { 146 | return l(o(a)) 147 | } 148 | function q(a) { 149 | return n(p(a)) 150 | } 151 | function r(a, b) { 152 | return m(o(a), o(b)) 153 | } 154 | function s(a, b) { 155 | return n(r(a, b)) 156 | } 157 | function t(a, b, c) { 158 | return b ? c ? r(b, a) : s(b, a) : c ? p(a) : q(a) 159 | } 160 | "function" == typeof define && define.amd ? define(function() { 161 | return t 162 | }) : a.md5 = t 163 | }(this); 164 | 165 | 166 | function getpwd(pwd){ 167 | hashKey= 'hgfdherwerehjtyutr' 168 | return md5(md5(pwd).split("").reverse().join("") + this.hashKey); 169 | } 170 | -------------------------------------------------------------------------------- /九游_加密完成_非法登录/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | Base_Url: https://passport.9you.com/login/ulogin.php?callback=loginCallbackNew&denyCallbackURL=http://uhg.9you.com/vip/Member/sso_deny&sid=3588812f462a13bc909e04fce8d15ae9 4 | Author: jing 5 | Modify: 2020/10/22 6 | 7 | Notes: 2021/01/25 在代码补全时发现 网站死循环跳转 等下次补全时 在进行观察 8 | """ 9 | 10 | 11 | import execjs 12 | import requests 13 | import time 14 | 15 | 16 | class Login(): 17 | def __init__(self, user, pwd): 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = requests.session() 21 | 22 | def get_pwd(self): 23 | with open('./get_pwd.js', encoding='utf-8') as f: 24 | js_pwd = f.read() 25 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 26 | return pwd 27 | 28 | def get_captcha(self): 29 | response = self.sess.get("https://login.passport.9you.com/identifyingCode.jsp?0.7676386687853862") 30 | with open("captcha.png", "wb") as f: 31 | f.write(response.content) 32 | 33 | def login_(self): 34 | self.sess.get("https://login.passport.9you.com/sso_tddevice.jsp") 35 | pwd = self.get_pwd() 36 | print(pwd) 37 | 38 | self.get_captcha() 39 | login_url_raw = "https://login.passport.9you.com/checkJCode?callback=_jqjsp&userName={}&password={}&id=LX_GAME&identifyingCode={}&&_{}=" 40 | login_url = login_url_raw.format(self.user, self.pwd, input("请输入验证码:"), str(int(time.time()*1000))) 41 | 42 | self.sess.headers = { 43 | "Accept": "*/*", 44 | "Accept-Encoding": "gzip, deflate, br", 45 | "Accept-Language": "zh-CN,zh;q=0.9", 46 | "Connection": "keep-alive", 47 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 48 | "Host": "login.passport.9you.com", 49 | "Sec-Fetch-Mode": "no-cors", 50 | "Sec-Fetch-Site": "same-site", 51 | } 52 | 53 | response = self.sess.get(login_url) 54 | print(response.content.decode()) 55 | 56 | 57 | if __name__ == '__main__': 58 | user = "121212121" 59 | pwd = "121212121212" 60 | 61 | login = Login(user, pwd) # TODO: 输入 账号 密码 62 | 63 | login.login_() -------------------------------------------------------------------------------- /今日头条_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.toutiao.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import time 9 | import requests 10 | 11 | 12 | class Login(object): 13 | def __init__(self): 14 | self.sess = requests.session() 15 | 16 | def get_anc_img(self): 17 | 18 | url = "https://verify.snssdk.com/captcha/get?lang=zh&app_name=sso&h5_sdk_version=2.15.4&sdk_version=&iid=0&did=0&device_id=0&ch=web_text&aid=24&os_type=2&tmp=1602840513266&platform=pc&webdriver=undefined&fp=verify_kgbyyi46_kf8QRlqr_QNyo_4GPK_A43v_OLRQGCreBEGa&subtype=&challenge_code=1105&os_name=windows&_signature=_02B4Z6wo00f01QAlAowAAIBCztEXfe.kYFEAIAYAAB-CCUOL4jqGfMEhJqhe1B0u1lPj8l9tOi3GSINJuNg7yICb.Zzmsx9bIldTq56Qnvj7PnxkEF0ZIGdGw-Y7ZvBQLI0lsHboe2IKZ12737" 19 | 20 | r = self.sess.get(url).json() 21 | 22 | with open("./one.jpg", "wb") as f1: 23 | f1.write(self.sess.get(r["data"]["question"]["url1"]).content) 24 | with open("./two.png", "wb") as f2: 25 | f2.write(self.sess.get(r["data"]["question"]["url2"]).content) 26 | 27 | 28 | 29 | def anc(self, data): 30 | js_ = """ 31 | function getpwd(e) { 32 | var t, n = []; 33 | if (void 0 === e) 34 | return ""; 35 | t = function(e) { 36 | for (var t, n = e.toString(), r = [], o = 0; o < n.length; o++) 37 | 0 <= (t = n.charCodeAt(o)) && t <= 127 ? r.push(t) : 128 <= t && t <= 2047 ? (r.push(192 | 31 & t >> 6), 38 | r.push(128 | 63 & t)) : (2048 <= t && t <= 55295 || 57344 <= t && t <= 65535) && (r.push(224 | 15 & t >> 12), 39 | r.push(128 | 63 & t >> 6), 40 | r.push(128 | 63 & t)); 41 | for (var i = 0; i < r.length; i++) 42 | r[i] &= 255; 43 | return r 44 | }(e); 45 | for (var r = 0, o = t.length; r < o; ++r) 46 | n.push((5 ^ t[r]).toString(16)); 47 | return n.join("") 48 | } 49 | 50 | """ 51 | r = execjs.compile(js_).call("getpwd", data) 52 | return r 53 | 54 | def login(self): 55 | user = self.anc("") # TODO: 输入账号 56 | pwd = self.anc("") # TODO: 输入密码 57 | print(user, pwd) 58 | 59 | data = { 60 | "aid": "24", 61 | "service":"", 62 | "account_sdk_source": "sso", 63 | "mix_mode": "1", 64 | "fp": "verify_kgbyyi46_kf8QRlqr_QNyo_4GPK_A43v_OLRQGCreBEGa", 65 | "password": user, 66 | "account": pwd, 67 | "web_timestamp": str(int(time.time()*1000)) 68 | } 69 | 70 | login_url = "https://sso.toutiao.com/account_login/v2/" 71 | r = self.sess.post(login_url, data=data) 72 | print(r.content.decode()) 73 | 74 | 75 | if __name__ == '__main__': 76 | login = Login() 77 | login.login() 78 | # login.get_anc_img() -------------------------------------------------------------------------------- /今日头条_已完成/one.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/今日头条_已完成/one.jpg -------------------------------------------------------------------------------- /今日头条_已完成/two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/今日头条_已完成/two.png -------------------------------------------------------------------------------- /今日头条_已完成/头条号/data.txt: -------------------------------------------------------------------------------- 1 | source: 0 2 | content:

马上马上了

3 | title: 马上更新敬请期待 4 | search_creation_info: {"abstract":""} 5 | title_id: 1603952811774_1673176971118600 6 | extra: {"content_word_cnt":4,"gd_ext":{"entrance":"hotspots","from_page":"publisher_mp","enter_from":"PC","device_platform":"mp","is_message":0}} 7 | mp_editor_stat: {} 8 | educluecard: 9 | draft_form_data: {"coverType":2} 10 | pgc_feed_covers: [{"id":"","url":"http://p1.pstatp.com/list/dfic-imagehandler/4dc6793a-6abd-46cc-b7d7-a55f21816183","uri":"dfic-imagehandler/4dc6793a-6abd-46cc-b7d7-a55f21816183","ic_uri":"http://p1.pstatp.com/origin/dfic-imagehandler/4dc6793a-6abd-46cc-b7d7-a55f21816183","thumb_width":1200,"thumb_height":863}] 11 | claim_origin: 0 12 | origin_debut_check_pgc_normal: 0 13 | is_fans_article: 0 14 | govern_forward: 0 15 | praise: 0 16 | disable_praise: 0 17 | article_ad_type: 3 18 | tree_plan_article: 0 19 | activity_tag: 0 20 | trends_writing_tag: 0 21 | community_sync: 0 22 | save: 1 23 | timer_status: 0 24 | timer_time: -------------------------------------------------------------------------------- /今日头条_已完成/抓取新闻/getdata.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.toutiao.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | self.sess.headers = { 22 | "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36" 23 | } 24 | 25 | def get_signature(self): 26 | # 加密中的地址与请求的地址必须一致, 或者在请求首页新闻时 可以不加 signature 参数 27 | with open('./get_signature.js', encoding='utf-8') as f: 28 | js_pwd = f.read() 29 | _signature = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getsignatrue") 30 | return _signature 31 | 32 | def login_(self): 33 | # self.sess.get("https://www.toutiao.com/") 34 | _signature = self.get_signature() 35 | url = "https://www.toutiao.com/api/pc/feed/?max_behot_time=0&category=__all__&utm_source=toutiao&widen=1&tadrequire=true".format(_signature) 36 | res = self.sess.get(url).json() 37 | pprint(res) 38 | 39 | 40 | if __name__ == '__main__': 41 | user = "" 42 | pwd = "222222" 43 | 44 | login = Login(user, pwd) # TODO: 输入账号&密码 45 | login.login_() 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /企查查_未完成_只有滑动验证需要破解/data.txt: -------------------------------------------------------------------------------- 1 | phone_prefix: +86 2 | nameNormal: 18513606785 3 | pwdNormal: 111111 4 | keep: option1 5 | csessionid_one: 01hjFaxLnU1FM0bapZG17apHtHRKEsBC3zH6xuo5dBpimX2BWYsTXX3E3vHi6DhQ7k_SACvQ7y0gh3d0xIxWmtGGCPTxLVPmFVWgNrJfbz2Ik9HDpegj5iaFNoOCRwEtVG05YQG1bvwgZ512l1loHHp-DUma2ZVFKNrDPSAPwY6B0 6 | sig_one: 05FOe5nWEQkMpptgMDkbpYIAYV-OFxVPJBJgl-Wr-bqvq0c_GAmdpbIgdjiz2jqGxqx4tt9aRYwcGj_mOv7stuw4VlhCl2kIwUxO-L1ClfqoOUWKZnxSILPb8HInW7RVmhoZ5oVIkzTd_HaPDzCt0PilPOD-v7hpU05n9vVK-nELHuSDCV-8-LXtZvs7hfhYwXIT5_gUcsgePOfMTNiK4lZcl9VyUD6fMMYn5ukGKLywN5E0BcShADZYMDd3-KVGTzJMEIeQiz51bZrW7E2YnvSGQ1P2QB8IfU9ocxlaUC5pyKFCGT_QxXkuswSuaKMXnrsb9cvWEyVI0goejqBDZz65pF_X6TemxiRWRbFG1yN7wjXgH5WutosLBxrQT8o9GB 7 | token_one: QNYX:1603691892484:0.06369664037166856 8 | scene_one: login 9 | verify_type: 1 -------------------------------------------------------------------------------- /企查查_未完成_只有滑动验证需要破解/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.qcc.com/ 3 | Author:jing 4 | Modify:2020/10/26 5 | """ 6 | """ 7 | 说明 滑动验证的 n p 参数 暂时没有完成 已找到js生成的地方 8 | 9 | """ 10 | 11 | import execjs 12 | import requests 13 | from pprint import pprint 14 | import time 15 | 16 | 17 | class Login(object): 18 | 19 | def __init__(self, user, pwd): 20 | self.user = user 21 | self.pwd = pwd 22 | self.sess = requests.session() 23 | self.login_url = "https://www.qcc.com/user_loginaction" 24 | 25 | def get_pwd(self): 26 | 27 | js_pwd = """ 28 | const jsdom = require("jsdom"); 29 | const { JSDOM } = jsdom; 30 | const dom = new JSDOM(`

Hello world

`); 31 | window = global; 32 | var document = dom.window.document; 33 | var params = { 34 | location:{ 35 | hash: "", 36 | host: "www.toutiao.com", 37 | hostname: "www.toutiao.com", 38 | href: "https://www.toutiao.com", 39 | origin: "https://www.toutiao.com", 40 | pathname: "/", 41 | port: "", 42 | protocol: "https:", 43 | search: "", 44 | }, 45 | navigator:{ 46 | appCodeName: "Mozilla", 47 | appName: "Netscape", 48 | appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 49 | cookieEnabled: true, 50 | deviceMemory: 8, 51 | doNotTrack: null, 52 | hardwareConcurrency: 4, 53 | language: "zh-CN", 54 | languages: ["zh-CN", "zh"], 55 | maxTouchPoints: 0, 56 | onLine: true, 57 | platform: "Win32", 58 | product: "Gecko", 59 | productSub: "20030107", 60 | userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 61 | vendor: "Google Inc.", 62 | vendorSub: "", 63 | }, 64 | "screen":{ 65 | availHeight: 1040, 66 | availLeft: 0, 67 | availTop: 0, 68 | availWidth: 1920, 69 | colorDepth: 24, 70 | height: 1080, 71 | pixelDepth: 24, 72 | width: 1920, 73 | } 74 | }; 75 | Object.assign(window,params); 76 | 77 | 78 | window.document = document; 79 | 80 | const {e} = require("E:/pycharmproject/study_own/js_study/企查查_未完成_只有滑动验证需要破解/um.js") 81 | 82 | 83 | function midtoken(){ 84 | var aa = {appName: "QNYX", 85 | enableFY: 1, 86 | jf: 1, 87 | serviceUrl: "https://ynuf.aliapp.org/service/um.json", 88 | timeout: 3000, 89 | wtac: 1} 90 | var ss = e(23, aa, !1, function(n, o) {alert(o.tn);if(o.tn.startsWith('T2gA')){window.ssss=o.tn}"success" === n ? e.umidToken = o.tn : (e.umidToken = "defaultToken4_init_failed with " + n + "@@" + t + "@@" + (new Date).getTime(),i < 3 && r())}) 91 | return window.ssss; 92 | } 93 | 94 | 95 | """ 96 | 97 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("midtoken") 98 | return pwd 99 | 100 | def load_data(self, path): 101 | data = {} 102 | with open(path, "rt", encoding="utf-8") as f: 103 | read = f.readlines() 104 | for line in read: 105 | split_ = line.split(":") 106 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 107 | return data 108 | 109 | def login_(self): 110 | # self.sess.get("https://www.qcc.com/") 111 | # self.sess.headers ={ 112 | # "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36" 113 | # } 114 | 115 | # data = self.load_data("data.txt") 116 | # data["nameNormal"] = self.user 117 | # data["pwdNormal"] = self.pwd 118 | # data["token_one"] = "QNYX:" + str(int(time.time()*1000)) + ":" + 0.06369664037166856 119 | 120 | pwd = self.get_pwd() 121 | print(pwd) 122 | # res = self.sess.post(self.login_url, data=data) 123 | # print(res.content.decode()) 124 | 125 | 126 | if __name__ == '__main__': 127 | user = "" 128 | pwd = "2222" 129 | 130 | login = Login(user, pwd) # TODO: 输入账号&密码 131 | login.login_() -------------------------------------------------------------------------------- /优酷视频_已完成/data.txt: -------------------------------------------------------------------------------- 1 | loginId: 2 | password2: cb52ce1ba0176839314a8f3797b3346ba3d6fef7460ed420ef321eaf77f37dadcc4b0bdca3e10e801a778688f7ae9a93a0e2bdcadb0ab26c1604b3cedad8d343e5fbf694156e39ba6a8d82c0ea0c274debf58eb8bf39c71f3c87448de407d1acd32b2a471602aecbcad4ca0331e13198dd3ce72f219327de59e108774a264bd0 3 | keepLogin: false 4 | ua: 137#mN99hE9oUxSm1ukeYBdFvzmqIQvbxtVv5Q2LpFSUXIQn47V2iwlYEagkgy73g7ZhXpGeDYTuezm53hrYy2eJGsQU2/UjGOMuU5zsWuCkTMwsm5wWGTcyw6Kje2K5EtS00zHnxFAK9WO/+DXtn+FLqL9EDRfkgKFWJdTS1TSnNan2kyONaMEPC0HHAnkR1XFFJmSVETsgzOJG0X3+PRvoMeBeqeJCjCvZAt15n3J14AT5RbjRj66op06Esm22xOgRQpJsc6E/eipFs9H5hVoeJ409TWW+CeXm8hZnT1i9JFEajfrOUecB0Zg1UnBZatWbb60/LVSXABotXalasv5zBK9g9ZsFHizv4xsbOr6La5BzH8IYvUF+DhnJUGMIFu9aSrKXW7obR/bOh8IZ1q3OAN9CcA9awMxPMLYgLEqqng5CyDfoFTe6lw/UJzIou6qB0yAuBrEgSgnS41TmCxwn9JO2sSo12SSxfipAkvgd3eqFJQ1ULAd5gBGo3TRfcBXhGgPpO0rxguGSNnclOZqODsjxdTj2Lb2MTmVxLtTMHWcuG7Kc+NDuGxfMzeZSUIW5UfiqmORg3V34LmXZzf19BO3nFnEYUK4hdweqT43wZe0Bb9ZVL/cPldQHiALWbP3j6wHxtvTzBTZ8ciV1TNN5S3+xSujOncOqn0ZzOGzZwCXHRDBPFIe2NKZIadwBrinNKKuGSDrUavZTollcOU7WnnHeFvJ3DK5PEd29os+clr2ZVfljgEUicW+kO+qmQofJ+GxViCej1Ilw2EqpYHsd1qgi9tIyEA2o+GDppkJECxSdSdppYSUS1lQypXiwQonoBf6b5nVc1IBi+piVYSUx1lLyOHiBQoLfOtYgWXq9lRj8Se8NbPfUYZoBpXpcQefx+GXppRJc16ci+ppVYSUx1lgippimQofJBBviXYWp9+VUzdDnxh0zJmqxVKmJ8fjnH/T+Sih21Ydvd4nmBBULlNwGhbrrLbi5xBlHNnwKZ8EbrmqaFUHCX7fk5lagb/HHHgVe7oZFswYnUwXEX4e3XnyxuljRvQAJDYf/RF52eQZlIUos7zMMt8UGNDXamiXy37FVpjFYrqtJSIL2WMn/g3BpkumBjlxmrVQ5yX3Re2vOq6Uzy2TRpeeoIqoKWCR1kB6IfnpI6/e6LbjK72/lNP+RNyN15YdmiMSpJuNrHey8edUgXGO1sGisqCHA+gpVYTSfzrtrxSxUGAo5eQGTwZXhi7VpyBstZ1VFXpsc6yM0biuiW8nBLc9wdPJXHJZtL7VMx1XdEG0dqRDHRPRVKveBz18rWgxPx3wAr7X2yFy4KxkRFzYmxTS6jtoNIg5fwMV4vFwzpY3XeEn/toNl34WMyUtmKRdAx8P9JzapmhR1vjHhNNL/WlIXzSFf/77hPV/zHZAGJglVX8CDkX58bBB9wC/l4fIohD86mR/58CHq3PtU7x5f9jvks5peJXp+5p36a8CqN0AN2R33G2+775/MyzQMeFaPzEDpBirZIGWqmnLuNi8023FuyUei 5 | umidGetStatusVal: 255 6 | screenPixel: 2560x1440 7 | navlanguage: zh-CN 8 | navUserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 9 | navPlatform: Win32 10 | appName: youku 11 | appEntrance: youku_dark 12 | _csrf_token: exsI0PXxpArLmHDD6OddC3 13 | umidToken: 93783ede983890413b76c9d5847c53b08468d54d 14 | isMobile: false 15 | lang: zh_CN 16 | returnUrl: 17 | hsiz: qksQFuPrN-FKYPTGB-XNpg 18 | fromSite: 23 19 | bizParams: -------------------------------------------------------------------------------- /优酷视频_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: 4 | Modify: 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | self.sess = requests.session() 18 | self.sess.headers= { 19 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 20 | } 21 | self.login_url = "https://cnpassport.youku.com/newlogin/login.do?appName=youku&fromSite=23" 22 | 23 | def load_data(self, path): 24 | data = {} 25 | with open(path, "rt", encoding="utf-8") as f: 26 | read = f.readlines() 27 | for line in read: 28 | split_ = line.split(":") 29 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 30 | return data 31 | 32 | def get_pwd(self): 33 | with open('./get_pwd.js', encoding='utf-8') as f: 34 | js_pwd = f.read() 35 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 36 | return pwd 37 | 38 | def login_(self): 39 | self.sess.get("https://www.youku.com/") 40 | 41 | pwd = self.get_pwd() 42 | data = self.load_data("./data.txt") 43 | data["password2"] = pwd 44 | data["loginId"] = self.user 45 | 46 | res = self.sess.post(self.login_url, data=data).json() 47 | pprint(res) 48 | 49 | # TODO:显示登陆成功, 但是下方的验证 参数还需破解, 一直session过期或者令牌为空 50 | 51 | # res = self.sess.get("https://acs.youku.com/h5/mtop.youku.vip.xtop.member.profile.get/1.0/?jsv=2.5.1&appKey=24679788&t=1603444756988&sign=6a9195a8aab7df2bbceac90abfb2e9ee&api=mtop.youku.vip.xtop.member.profile.get&v=1.0&type=jsonp&dataType=jsonp&timeout=20000&jsonpIncPrefix=utility&callback=mtopjsonputility13&data=%7B%22req%22%3A%22%7B%5C%22deviceType%5C%22%3A%5C%22pc%5C%22%2C%5C%22show%5C%22%3A1%7D%22%7D") 52 | # pprint(res.content.decode()) 53 | 54 | 55 | if __name__ == '__main__': 56 | user = "" 57 | pwd = "" 58 | 59 | login = Login(user, pwd) # TODO: 输入账号&密码 60 | login.login_() 61 | 62 | -------------------------------------------------------------------------------- /使用selenium获取ua/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/使用selenium获取ua/__init__.py -------------------------------------------------------------------------------- /使用selenium获取ua/get_ua.py: -------------------------------------------------------------------------------- 1 | 2 | from selenium import webdriver 3 | from selenium.webdriver.chrome.options import Options 4 | from time import sleep 5 | 6 | # 配置chrome的参数 7 | options = Options() 8 | options.add_argument('--headless') 9 | 10 | driver = webdriver.Chrome( 11 | executable_path=r"E:\webdriver_\chrome_85.0.4183.83\chromedriver.exe", chrome_options=options) # 获取chrome浏览器的驱动,并启动Chrome浏览器 12 | 13 | driver.get(r"E:\pycharmproject\study_own\js_study\使用selenium获取ua\ua.html") # 同步执行 JavaScript 语句 14 | driver.implicitly_wait(10) 15 | alter = driver.switch_to.alert.text 16 | print(alter) 17 | 18 | -------------------------------------------------------------------------------- /信息公示系统_进行中/get_data.py: -------------------------------------------------------------------------------- 1 | from requests import session 2 | import requests 3 | import re 4 | import execjs 5 | from pprint import pprint 6 | import time 7 | 8 | 9 | class GetIndex(object): 10 | 11 | def __init__(self): 12 | self.url = 'http://bj.gsxt.gov.cn/index.html' 13 | self.headers = { 14 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 15 | 'Accept-Encoding': 'gzip, deflate', 16 | 'Accept-Language': 'zh-CN,zh;q=0.9', 17 | 'Cache-Control': 'no-cache', 18 | 'Connection': 'keep-alive', 19 | 'Host': 'bj.gsxt.gov.cn', 20 | 'Pragma': 'no-cache', 21 | 'Upgrade-Insecure-Requests': '1', 22 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36', 23 | 'Referer': 'http://bj.gsxt.gov.cn/index.html', 24 | } 25 | 26 | self.cookie_headers = { 27 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 28 | 'Accept-Encoding': 'gzip, deflate', 29 | 'Accept-Language': 'zh-CN,zh;q=0.9', 30 | 'Cache-Control': 'no-cache', 31 | 'Connection': 'keep-alive', 32 | 'Host': 'bj.gsxt.gov.cn', 33 | 'Pragma': 'no-cache', 34 | 'Upgrade-Insecure-Requests': '1', 35 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36', 36 | 37 | } 38 | 39 | def get_cookies(self, res): 40 | js_str = re.findall("document.cookie=(.*?)\+\('m'\)\+\('a'\)\+\('x'\)", res.text, re.S)[0] 41 | js = """function jl_clear(){ return %s }""" % js_str 42 | __jsluid_h = "__jsluid_h=" + res.cookies['__jsluid_h'] 43 | __jsl_clearance = execjs.compile(js).call('jl_clear').replace(";", '') 44 | 45 | cookie = '{}; {}'.format(__jsluid_h, __jsl_clearance) 46 | self.headers['Cookie'] = cookie 47 | 48 | res2 = requests.get(self.url, headers=self.headers) 49 | set_timeout = re.findall(r"(setTimeout.*?\},.*?\);)", res2.text, re.S)[0] 50 | js_cookie = "return {}".format(re.findall("setTimeout.*?=(.*?);", res2.text, re.S)[0]) 51 | js = res.content.decode("utf-8").replace(set_timeout, js_cookie).replace("go({", 52 | "function get_jsl(){return go({").replace( 53 | "", "}").replace("\\x20", ' ').replace("\\x22", '"') 54 | 55 | js = self.get_js(js) 56 | 57 | jsl = execjs.compile(js, cwd=r'E:\node\node_modules\npm\node_modules').call("get_jsl") 58 | 59 | cookie = "{} {};".format(__jsluid_h, jsl.split(";")[0]) 60 | self.headers['Cookie'] = cookie 61 | 62 | res = requests.get(self.url, headers=self.headers) 63 | jsid = re.findall("(JSESSIONID=.*?;)", res.headers['Set-Cookie'])[0] 64 | token = re.findall("(SECTOKEN=.*?;)", res.headers['Set-Cookie'])[0] 65 | tlb_cookie = re.findall("(tlb_cookie=.*?;)", res.headers['Set-Cookie'])[0] 66 | self.headers['Cookie'] = '{} {} {} {}'.format(self.headers['Cookie'], jsid, token, tlb_cookie) 67 | 68 | res = requests.get(self.url, headers=self.headers) 69 | print(res.text) 70 | 71 | def get_js(self, js_): 72 | js = r""" 73 | const jsdom = require("jsdom"); 74 | const { JSDOM } = jsdom; 75 | const dom = new JSDOM(`

Hello world

`); 76 | window = global; 77 | var document = dom.window.document; 78 | var params = { 79 | location:{ 80 | hash: "", 81 | 82 | pathname: "/", 83 | port: "", 84 | protocol: "https:", 85 | search: "", 86 | }, 87 | navigator:{ 88 | appCodeName: "Mozilla", 89 | appName: "Netscape", 90 | appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 91 | cookieEnabled: true, 92 | deviceMemory: 8, 93 | doNotTrack: null, 94 | hardwareConcurrency: 4, 95 | language: "zh-CN", 96 | languages: ["zh-CN", "zh"], 97 | maxTouchPoints: 0, 98 | onLine: true, 99 | platform: "Win32", 100 | product: "Gecko", 101 | productSub: "20030107", 102 | userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 103 | vendor: "Google Inc.", 104 | vendorSub: "", 105 | }, 106 | "screen":{ 107 | availHeight: 1040, 108 | availLeft: 0, 109 | availTop: 0, 110 | availWidth: 1920, 111 | colorDepth: 24, 112 | height: 1080, 113 | pixelDepth: 24, 114 | width: 1920, 115 | } 116 | }; 117 | Object.assign(window,params); 118 | window.document = document; 119 | 120 | %s 121 | """ % js_ 122 | return js 123 | 124 | def run(self): 125 | res = requests.get(self.url, headers=self.headers) 126 | self.get_cookies(res) 127 | pprint(self.headers) 128 | 129 | if __name__ == '__main__': 130 | get_index = GetIndex() 131 | get_index.run() 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /凤凰网_已完成/captcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/凤凰网_已完成/captcha.png -------------------------------------------------------------------------------- /凤凰网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://www.ifeng.com/ 3 | Author: jing 4 | Modify: 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import base64 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.login_url = "https://user.ifeng.com/api/v1/login/common?platform=w&systemid=1" 24 | 25 | 26 | 27 | def load_data(self, path): 28 | data = {} 29 | with open(path, "rt", encoding="utf-8") as f: 30 | read = f.readlines() 31 | for line in read: 32 | split_ = line.split(":") 33 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 34 | return data 35 | 36 | def get_captcha_id(self): 37 | url = "https://user.ifeng.com/api/v1/get/captcha?type=2&platform=w&systemid=1&_=" + str(int(time.time() * 1000)) 38 | res = self.sess.get(url).json() 39 | img = res["image"][22:] 40 | with open("captcha.png", "wb") as f: 41 | f.write(base64.b64decode(img)) 42 | 43 | return res["id"] 44 | 45 | def login_(self): 46 | self.sess.get("http://www.ifeng.com/") 47 | captcha_id = self.get_captcha_id() 48 | 49 | data = { 50 | "account": self.user, 51 | "password": self.pwd, 52 | "captcha_code": input("请输入验证码"), 53 | "captcha_id": captcha_id 54 | } 55 | 56 | res = self.sess.post(self.login_url, json=data) 57 | 58 | 59 | res = self.sess.get("https://user.ifeng.com/api/v1/get/userinfobytoken?platform=w&systemid=1").json() 60 | if res["mobile"] == self.user: 61 | print("登录成功") 62 | else: 63 | print("账号或密码错误,或验证码错误") 64 | 65 | if __name__ == '__main__': 66 | user = "" 67 | pwd = "." 68 | 69 | login = Login(user, pwd) # TODO: 输入账号&密码 70 | login.login_() -------------------------------------------------------------------------------- /去哪儿_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/去哪儿_已完成/captcha.jpg -------------------------------------------------------------------------------- /去哪儿_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://user.qunar.com/passport/loginx.jsp 3 | Author:jing 4 | Modify:2020/12/11 5 | """ 6 | import uuid 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import json 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.login_url = "https://user.qunar.com/passport/loginx.jsp" 24 | 25 | def captcha_(self): 26 | url = "https://user.qunar.com/captcha/api/image?k={en7mni(z&p=ucenter_login&c=ef7d278eca6d25aa6aec7272d57f0a9a&t=1607587064791" 27 | res = self.sess.get(url) 28 | 29 | with open("captcha.jpg", "wb") as f: 30 | f.write(res.content) 31 | 32 | def login_(self): 33 | self.sess.get("http://user.qunar.com/passport/login.jsp?ret=http%3A%2F%2Fhotel.qunar.com%2F%3Fex_track%3Dauto_51f61c7d") 34 | self.sess.get("https://rmcsdf.qunar.com/js/df.js?org_id=ucenter.login&js_type=0") 35 | self.sess.get("http://user.qunar.com/passport/addICK.jsp") 36 | self.sess.get("https://rmcsdf.qunar.com/js/device.js?orgId=ucenter.login&sessionId=5185aba1-a708-46fc-a1db-7822d9ff60b3&auto=false") 37 | self.captcha_() 38 | print(self.sess.cookies) 39 | data = { 40 | "loginType": "0", 41 | "ret": "http://hotel.qunar.com/?ex_track=auto_51f61c7d", 42 | "username": self.user, 43 | "password": self.pwd, 44 | "remember": "1", 45 | "vcode": input("请输入验证码"), 46 | } 47 | 48 | self.sess.cookies.set("QN271", str(uuid.uuid4())) 49 | res = self.sess.post(self.login_url, data=data) 50 | print(res.content.decode()) 51 | 52 | if __name__ == '__main__': 53 | user = "" 54 | pwd = "" 55 | 56 | login = Login(user, pwd) # TODO: 输入账号&密码 57 | login.login_() 58 | -------------------------------------------------------------------------------- /启信宝_未开始/get_pwd.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/启信宝_未开始/get_pwd.js -------------------------------------------------------------------------------- /启信宝_未开始/login_demo.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: 4 | Modify: 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def get_pwd(self): 22 | with open('./get_pwd.js', encoding='utf-8') as f: 23 | js_pwd = f.read() 24 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 25 | return pwd 26 | 27 | def login_(self): 28 | pwd = self.get_pwd() 29 | print(pwd) 30 | 31 | 32 | if __name__ == '__main__': 33 | user = "" 34 | pwd = "222222" 35 | 36 | login = Login(user, pwd) # TODO: 输入账号&密码 37 | login.login_() -------------------------------------------------------------------------------- /和讯网__validate未生成_后续有点选验证/data.txt: -------------------------------------------------------------------------------- 1 | loginInfo: %E9%98%BF%E6%89%93%E5%8F%91 2 | password: eFQHz0owsXCwIprLRdKP30%2BMAvakjPbiadDZUk6DHoO0mH%2BRcWhPoyBvJ576lYAvD471yUhnJrgYFztp8mUSUrZX7IEWsmBZRx8GGlJ5bA7FcuuZuUPY%2FRM0CZWAmm0YFz4rOrC%2BTUOoOHFwzNzImMpqdQPJBwoXoG6xgRudRLA%3D 3 | clientkey: 6de3b3f1fbcc459fb0ccce92375ee702 4 | validate: Uyncf5oqtJfMckggG1.bN.Vu2gNSqt7.FckQuCG6VIB6SiILcmhm1dDbGowQwINtNOJTJOPGETC5NrXn4BJOvgSkndx4LsfJhkwTVvIs8cqqfUZhuy97V-_uk2ZiwYOWSWewqxwjpzKqturrNb6KUCqPWJyMfgSgT1wBFPkHjwHsLAXjbDHjRE8iRXSXz9z4YJHXsFLBmSmNjIubDMYhJsXsBoR.IXqU6LMSPOT1ozHELWGE4waENXk6tb75qAUZ4JVTXtHt6j1_p05VBRWBt2spwwnMv1jyLCGh8H_uz7ngK_8aygCsdjlYhvDKbpbotlHeayo-1o64Y0xVvBblcU_SZHSTjBGaHp7lJuRed6nw16B.QbEVNRdcTSg74ezxeTOF.aJ-zx8NhAwq0_QkumLMynOyDMz0yLMqU.gOPQr2v9K1i2ybBsMD4iLuenaSx4kFL5uY-KHF5DISbvQIiqEydOkt-_JHHHNUwIHO6RBG2CJwumQbJXERtcq3 5 | verifycode: %E8%AF%B7%E8%BE%93%E5%85%A5%E9%AA%8C%E8%AF%81%E7%A0%81 6 | fromhost: 7 | gourl: http%3A%2F%2Fwww.hexun.com%2F 8 | yiduntoken: 9ca17ae2e6ffcda170e2e6eed0cc50b7a7aeacae43a89a8fb7d15a939a8bbab56e818db8a6ee46bab597bace2af0feaec3b92aa5aeaca3fb52e99fb8b2ea4a838b9fa7d85fa8f581b5cb7487e7a9b9f280acb6ee9e 9 | from: pc 10 | act: loginname 11 | -------------------------------------------------------------------------------- /和讯网__validate未生成_后续有点选验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://www.hexun.com/ 3 | Author:jing 4 | Modify:2020/10/28 5 | 6 | notes: 2021/01/25 多次登录会有点选验证 7 | """ 8 | 9 | import time 10 | import execjs 11 | import requests 12 | from pprint import pprint 13 | 14 | 15 | class Login(object): 16 | 17 | def __init__(self, user, pwd): 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = requests.session() 21 | self.login_url = "" 22 | self.sess.headers = { 23 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 24 | } 25 | 26 | def get_pwd(self, pubkey): 27 | with open('./get_pwd.js', encoding='utf-8') as f: 28 | js_pwd = f.read() 29 | 30 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd, pubkey) 31 | 32 | return pwd 33 | 34 | def login_(self): 35 | self.sess.get("http://www.hexun.com/") 36 | data = {"appid": "9073746913", "act": "get"} 37 | res = self.sess.post("https://reg.hexun.com/wapreg/pubkey.aspx", data=data).json() 38 | pubkey = res["data"]["pubkey"] 39 | key = res["data"]["key"] 40 | print(pubkey, key) 41 | pwd = self.get_pwd(pubkey) 42 | print(pwd) 43 | 44 | 45 | if __name__ == '__main__': 46 | user = "" 47 | pwd = "222222" 48 | 49 | login = Login(user, pwd) # TODO: 输入账号&密码 50 | login.login_() 51 | -------------------------------------------------------------------------------- /咪咕视频登录_已完成/data.txt: -------------------------------------------------------------------------------- 1 | sourceID: 208003 2 | appType: 0 3 | relayState: 4 | loginID: 2e2f4a907b50631fec72fc192723b992d1cfe866870de1102a0450480af8d526747c0e219a044a0cd903b936e255fef59e1ad11d5ae0b166587135905e1ee451df3101a9a2cf682c107a4cd58185f7cd6dcda3332eba441bfb12d8aa8593f364de162ff7801ebe92be7f957cac3ef30e53f4af71261f2ae2af8a10a70f9b71f1 5 | enpassword: 1195120e0d819a6e6717a24fbaa5467b7d0e181937ece2e531ede43ae3c9029683e8daa8d818f5c90e55eb2e22c0bee2c3ef0b603808733d22d08a14acd822ede8ffd9d183533d7dd9499ef1d1fe77dae94d9db9dae3338e6e0ea4dd97c7914e64eed7d4224002873da86a269858b955101eb677a3e3e7baacadcf205541ec46 6 | captcha: 7 | imgcodeType: 1 8 | rememberMeBox: 1 9 | fingerPrint: 3abf484a7060e2b73044ae5eaf36f301f0848da05ae7a0121195f50f876a17a71e8c2a107b9329106bfd9bd881882038f6f7b26e323a982e5ad38e144941faae6707b688e6b887207a8a535d6950b79db40cdf4cd741d31fe132bc470b30d123f99be46c63a0d7d36388aaaabaa6349a5cb8b8452cd1d456e57fa0f0bd3cac5c 10 | fingerPrintDetail: 0e2df5200138e0bed9583ff4c71a3ee8c6455e9016bebfccf4b716bd51a5bdb871fd0690de1ebcce59033926d5f75972f53419c32f2ce940a0ae1da3bc8d8797b700d8f72ca2e2af1ca8ffe3883cf4c47c672c1987d1a5e933deadcabc1533a7b1eb9d69d132ba4cccb1bb8640c9864ef86c4c0f0a9f078f4e10c340da69637c7bfa2f32467031c355b02fb69f0b001358ddbc92428e1b9f5aacdfa3c209cd70b651e9187e72c663ba5e94a893b94ddd2de555a157bd7b9987d48fe852bd215ca10a79b81808ed7ccfd8deca128ab6a47819e25171270c66f7d9ae61b3d52de55f098ca1d2793e53facda834a29be637775fd9ae8d48214805f666f13098358e23e28df2f0a8494ac30eae7abb4d5f60d1d50028bad3c9427f528af83c3cef2c1e275060445eb12f405d7cb6e0416c516ddcdc6fcf1ed586093ad7a2f7c19b4a6995fe4627172e9394f94d13aa0f9dc06a95420917125e9857c86919522d8a2e635f12d14062595f1b9a30e61a71734f63e3afdd02445b1e5f3dd16b20ffd78f7b597cf32020333046ee0cb827e183b885e22a9471eebac22b9c0fe07358357aa0e9bbe0d539a7654d449f397e230e48d76dc0e40beac11385fa90515a75c9cf2faa4e2a0edf57c9b4cf0fe3ebe1040037c8f01fe1f5667eba99be5af85915f05073b94739c1cbd1889fa4244f72e5ad824fca089505b15d26bf1fc77f3936d76aee2e6920cec1ec401f2475b30648a111212e613f37332edb9bfbe03aece2126a9eeb83b14cf966f95d090595dd7400f3d88914d3280ea9b8eb797cdf75d02cae4cfee8c60f0ff364fbfb7fb3b718390db9eee70c1538a3cb86b47c74680c1ab7c01c67379762197c14b7440203ccbfee1a22de7b896e79374b26799e08b32447b9603a971317b39e0ec8f74c65b9ecb3aa525214d79b0c6965754d26ca9d052b7a8bff4c86ac7cae66fe894be11aa3fe6b040b7591f35bf7c3d4923ffc43692bc998bfa2c5387afeb0b9bf40ffbeb4c0485a271db7ac1e8dc39f631153727cc6a4d4cff5c2545012cc48d69bc01e4b64957012fe681d34ebce954205c6552e34ccbb98aaef2463a8b4f6a6acaafbd0b10bda65caff158cca2795bbb71c739808ed806050f0055cd0f9d6caa4bf8085c13a4b5935da9bc4c4d88acc9de8c03f4946645d67c7c57040ad7630c1fa1e424d9905cb3be3ea2208246a3b419b3e859f041bb3cf7a52182fda4f92e604b66c4c7b0375a25e11ea38e5ef5de8c23d524d2898627d7a181b81f3a81ddfb1ad3a9c48549df62a663b75e86b242d180211aa03a93da624812aaca201bea55e54450282c34e6b762d764b26753b5766c792e0fbd93aac840cd45d3f6ba01ccaf546d98fd89b53b0e9573ba660915a19ff82a1e178023ad495ff5035329d9e3c26aad3e83ad47f371c96782749c0a31fbd04 11 | isAsync: true -------------------------------------------------------------------------------- /咪咕视频登录_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.migu.cn/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 22 | "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 23 | "Connection": "keep-alive", 24 | "Sec-Fetch-User": "?1", 25 | "Sec-Fetch-Site": "same-origin", 26 | "Sec-Fetch-Mode": "navigate", 27 | "Referer": "https://www.migu.cn/", 28 | "Accept-Encoding": "gzip, deflate, br", 29 | "Accept-Language": "zh-CN,zh;q=0.9", 30 | 31 | } 32 | self.login_url = "https://passport.migu.cn/authn" 33 | 34 | def load_data(self,path): 35 | data = {} 36 | with open(path, "rt", encoding="utf-8") as f: 37 | read = f.readlines() 38 | for line in read: 39 | split_ = line.split(":") 40 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 41 | return data 42 | 43 | def get_pwd(self): 44 | with open('./get_pwd.js', encoding='utf-8') as f: 45 | js_pwd = f.read() 46 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 47 | loginID = execjs.compile(js_pwd).call("getpwd", self.user) 48 | finger = execjs.compile(js_pwd).call("rsaFingerprint") 49 | return loginID, pwd, finger 50 | 51 | def login_(self): 52 | self.sess.get("https://passport.migu.cn/popup/login?sourceid=208003&callbackURL=https%3A%2F%2Fwww.migu.cn%2F") 53 | 54 | data = self.load_data("data.txt") 55 | 56 | loginID, pwd, finger = self.get_pwd() 57 | data["loginID"] = loginID 58 | data["enpassword"] = pwd 59 | data["fingerPrintDetail"] = finger["details"] 60 | data["fingerPrint"] = finger["result"] 61 | res = self.sess.post(self.login_url, data=data) 62 | # 登录成功 63 | 64 | 65 | if __name__ == '__main__': 66 | user = "" 67 | pwd = "" 68 | 69 | login = Login(user, pwd) # TODO: 输入账号&密码 70 | login.login_() 71 | -------------------------------------------------------------------------------- /唯品会_未能成功登陆/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.vip.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | import json 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | self.login_url = "https://passport.vip.com/login" 18 | self.sess = requests.session() 19 | self.sess.headers = { 20 | "Accept-Encoding": "gzip, deflate, br", 21 | "Accept-Language": "zh-CN,zh;q=0.9", 22 | "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 23 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 24 | } 25 | 26 | def get_pwd(self): 27 | with open('./get_pwd.js', encoding='utf-8') as f: 28 | js_pwd = f.read() 29 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 30 | return pwd 31 | 32 | def login_(self): 33 | self.sess.get("https://passport.vip.com/login?src=https%3A%2F%2Fwww.vip.com%2F") 34 | print(self.sess.cookies) 35 | pwd = self.get_pwd() 36 | data = { 37 | "loginName": self.user, 38 | "password": pwd, 39 | "remUser": "0", 40 | "whereFrom": "", 41 | "captchaId": "", 42 | "captchaTicket": "", 43 | } 44 | pprint(data) 45 | self.sess.headers["referer"] = "https://passport.vip.com/login" 46 | self.sess.headers["origin"] = "https://passport.vip.com" 47 | response = self.sess.post(self.login_url, data=data) 48 | print(response.content.decode()) 49 | 50 | # 51 | # print(response.content.decode()) 52 | # 53 | # response2 = self.sess.get("https://safe.vip.com/profile/safeCenter?callback=getAccountSafeInfo&_=1603272668032") 54 | # print(response2.content.decode()) 55 | "vipshop_passport_src" 56 | 57 | 58 | 59 | if __name__ == '__main__': 60 | login = Login("18513606786", "jing1995") # TODO: 输入 账号 密码 61 | login.login_() 62 | -------------------------------------------------------------------------------- /喜马拉雅_js未能成功加密/get_pwd.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/喜马拉雅_js未能成功加密/get_pwd.js -------------------------------------------------------------------------------- /喜马拉雅_js未能成功加密/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.ximalaya.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | 10 | 11 | import time 12 | import execjs 13 | import requests 14 | from pprint import pprint 15 | 16 | 17 | class Login(object): 18 | 19 | def __init__(self, user, pwd): 20 | self.user = user 21 | self.pwd = pwd 22 | self.sess = requests.session() 23 | self.sess.headers = { 24 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 25 | } 26 | self.login_url = "" 27 | 28 | def load_data(self, path): 29 | data = {} 30 | with open(path, "rt", encoding="utf-8") as f: 31 | read = f.readlines() 32 | for line in read: 33 | split_ = line.split(":") 34 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 35 | return data 36 | 37 | def get_pwd(self): 38 | with open('./get_pwd.js', encoding='utf-8') as f: 39 | js_pwd = f.read() 40 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 41 | return pwd 42 | 43 | def login_(self): 44 | pwd = self.get_pwd() 45 | print(pwd) 46 | 47 | 48 | if __name__ == '__main__': 49 | user = "" 50 | pwd = "222222" 51 | 52 | login = Login(user, pwd) # TODO: 输入账号&密码 53 | login.login_() -------------------------------------------------------------------------------- /国美_已完成/data.txt: -------------------------------------------------------------------------------- 1 | loginName: 2 | password: 3 | publicKey: 4 | passwordNum: 2 5 | captcha: 6 | autoLoginMode: 7 | chkRememberUsername: 1 8 | loginType: 0 9 | captchaType: login 10 | login: 登录 -------------------------------------------------------------------------------- /国美_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.gome.com.cn/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import requests 9 | import execjs 10 | from pprint import pprint 11 | import time 12 | import re 13 | 14 | 15 | class Login(): 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.login_url = "https://login.gome.com.cn/gmsst5Login.no" 20 | self.sess = requests.session() 21 | self.sess.headers = { 22 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 23 | } 24 | 25 | def load_data(self, path): 26 | data = {} 27 | with open(path, "rt", encoding="utf-8") as f: 28 | read = f.readlines() 29 | for line in read: 30 | split_ = line.split(":") 31 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 32 | return data 33 | 34 | def get_pwd(self): 35 | with open('./get_pwd.js', encoding='utf-8') as f: 36 | js_pwd = f.read() 37 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd) 38 | return pwd 39 | 40 | def login_(self): 41 | data = self.load_data("data.txt") 42 | res = self.sess.get("https://login.gome.com.cn/login?intcmp=sy-public01012") 43 | 44 | data["publicKey"] = re.findall("var publicKey=\"(.*?)\";", res.content.decode())[0] 45 | data["loginName"] = self.user 46 | data["password"] = self.get_pwd() 47 | 48 | self.sess.headers = { 49 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 50 | "origin": "https://login.gome.com.cn", 51 | "referer": "https://login.gome.com.cn/login?intcmp=sy-public01012", 52 | "sec-fetch-mode": "cors", 53 | "sec-fetch-site": "same-origin", 54 | 55 | } 56 | 57 | response = self.sess.post(self.login_url, data=data) 58 | print(response.content.decode()) 59 | 60 | 61 | if __name__ == '__main__': 62 | user = "" 63 | pwd = "" 64 | login = Login(user, pwd) # TODO: 输入 账号 密码 65 | login.login_() 66 | -------------------------------------------------------------------------------- /大众点评_滑动验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: http://www.dianping.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import execjs 9 | import requests 10 | 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | self.sess = requests.session() 18 | 19 | def get_pwd(self, uuid): 20 | with open('./get_pwd.js', encoding='utf-8') as f: 21 | js_pwd = f.read() 22 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd, uuid) 23 | return pwd 24 | 25 | def login_(self): 26 | # 获取滑动验证之后返回的uuid 即可获得加密之后的密码 27 | uuid = "" 28 | pwd = self.get_pwd(uuid) 29 | print(pwd) 30 | 31 | 32 | if __name__ == '__main__': 33 | user = "1111" 34 | pwd = "2222" 35 | 36 | login = Login(user, pwd) # TODO: 输入 账号 密码 37 | 38 | login.login_() 39 | 40 | 41 | -------------------------------------------------------------------------------- /大麦网_只做了密码加密_有滑动验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.damai.cn/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def get_pwd(self): 23 | with open('get_pwd.js', encoding='utf-8') as f: 24 | js_pwd = f.read() 25 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 26 | return pwd 27 | 28 | def login_(self): 29 | pwd = self.get_pwd() 30 | print(pwd) 31 | 32 | 33 | if __name__ == '__main__': 34 | user = "" 35 | pwd = "222222" 36 | 37 | login = Login(user, pwd) # TODO: 输入账号&密码 38 | login.login_() -------------------------------------------------------------------------------- /天眼查_已完成/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2020/12/21 4 | # @File : __init__.py.py 5 | """ 6 | 7 | 8 | 9 | 详细代码请在博客中私聊 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | """ 20 | 21 | -------------------------------------------------------------------------------- /好豆菜谱_后续有滑动验证/data.txt: -------------------------------------------------------------------------------- 1 | identity: 18513606487 2 | password: 53e73c49f0382e6e35d316e794fc7e59 3 | hkCode: 871773e0184047f88820455c14c71870 4 | _HOP_: {"version":"1.0.0","action":"api.www.login.login_by_password","secret_id":"5722f877e4b0d4512e3fd872","current_time":1604974585,"sign":"ca94679f9d6830e5132f8e226d4ccbb3"} 5 | from: mvue 6 | adcode: 100000 7 | appid: 100 8 | Siger: a8884a13418eb87dad86c8fd5196a8b9 9 | uuid: 0 10 | uid: 0 11 | hduid: 0 12 | vc: 177 13 | vn: 1.0.0 -------------------------------------------------------------------------------- /好豆菜谱_后续有滑动验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.haodou.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | 9 | import time 10 | import execjs 11 | import requests 12 | from pprint import pprint 13 | 14 | 15 | class Login(object): 16 | 17 | def __init__(self, user, pwd): 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = requests.session() 21 | self.login_url = "" 22 | 23 | def load_data(self, path): 24 | data = {} 25 | with open(path, "rt", encoding="utf-8") as f: 26 | read = f.readlines() 27 | for line in read: 28 | split_ = line.split(":") 29 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 30 | return data 31 | 32 | def get_pwd(self): 33 | with open('./get_pwd.js', encoding='utf-8') as f: 34 | js_pwd = f.read() 35 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 36 | return pwd 37 | 38 | def login_(self): 39 | data = self.load_data("data.txt") 40 | data["identity"] = self.user 41 | 42 | pwd = self.get_pwd() 43 | data["password"] = pwd 44 | print(pwd) 45 | 46 | 47 | if __name__ == '__main__': 48 | user = "" 49 | pwd = "222222" 50 | 51 | login = Login(user, pwd) # TODO: 输入账号&密码 52 | login.login_() 53 | 54 | 55 | -------------------------------------------------------------------------------- /宜贷网_$未定义/get_pwd.js: -------------------------------------------------------------------------------- 1 | navigator = {}; window= this; 2 | var encryptionJs = { 3 | //公钥串 4 | public_key : 'E2E8F13A51EE5F5D63F6D0C51984ACDF366D99544B4FD0AE5132BC1B6EBE8CA9AD715CDA1626E69BF1FE37EF1B4E63AAB0B1836D929C907EE9A2DDBA5EAC26C10AD740972983BC7AA1984BEA030B44CCC74E00611FAA21C5F94AC24A8EBE0EE38ECCAA0776300FC2A3C20B0285E6373A402860D92F1645034B217C2D4F102115', 5 | //公钥长度 6 | public_length : "10001", 7 | 8 | /** 9 | * 加密串 10 | × str 加密变量 11 | * @return bool 12 | */ 13 | edai_encryption:function(str){ 14 | var rsa = new RSAKey(); 15 | rsa.setPublic(encryptionJs.public_key, encryptionJs.public_length); 16 | var res = rsa.encrypt(str); 17 | 18 | return res; 19 | }, 20 | /** 21 | * 加密 22 | */ 23 | form_encryption:function(formDataStr){ 24 | datas=formDataStr.split("&"); 25 | var postArr = new Array(); 26 | $.each(datas,function(i,v){ 27 | var vv=v.split("="); 28 | postArr.push(vv[0]+'='+(vv[1]?encryptionJs.edai_encryption(vv[1]):'')); 29 | }); 30 | postStr = postArr.join('&'); 31 | return postStr; 32 | } 33 | } 34 | function getpwd(user, pwd){ 35 | var formDataStr = "returnurl=aHR0cDovL3d3dy55aWRhaS5jb20vYWJvdXQvaW5kZXguaHRtbA%3D%3D&keywords="+ user + "&password=" + pwd 36 | return encryptionJs.form_encryption(formDataStr) 37 | 38 | } 39 | -------------------------------------------------------------------------------- /宜贷网_$未定义/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://shop.yidai.com/ 3 | Author: jing 没有账号 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | 10 | 11 | class Login(object): 12 | def __init__(self, user, pwd): 13 | self.user = user 14 | self.pwd = pwd 15 | 16 | def get_pwd(self): 17 | with open('./get_pwd.js', encoding='utf-8') as f: 18 | js_pwd = f.read() 19 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 20 | return pwd 21 | 22 | def login_(self): 23 | pwd = self.get_pwd() 24 | print(pwd) 25 | 26 | 27 | if __name__ == '__main__': 28 | user = "11111" 29 | password = "22222" 30 | 31 | login = Login(user, password) # TODO: 输入 账号 密码 32 | login.login_() 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /开源中国_需请求google的参数/data.txt: -------------------------------------------------------------------------------- 1 | 48TunWH-ZrLteSwFVbw6tVnxÎ 03AGdBq26-77f7wflKojwAEcdu2CQs9bPRTS8rvd2AB8RW6VuUUbDJrYXhYq6B2J3Nzufq_sciYc-WSEjj1D2Ig6S8M86A1n3KwViAlbdIVOc3K-7kTzoKggN1mxIIyVAXZ5EcbVp7gN1dBAeg_HUpNLSDGjbnQxAoHy4wJtTM24feFv3d5qMBZVcbWGZpjaElthYr3QG2G-v2vJPGC5G6TZKHDit8769lAHXQdPKXr1DVZc8KrOeku07pXXqzCy74_M5FOcBHrYqkPZH1B6EpILlHtvbwk84mp7Q0J4o5SvDfdRwXnTdRatEWw33rZIWQNdMuj6EGtffzwYg27TEH5Qlmx3XW1H9t3O5PGUXU5gXTNSBzmD6nug1DCJSp8Id0SQg2etZv_FuV8oZZXmc_dYb-7f-4e_2kJhgGpesDOKSiR6-KNlBebQBjgl6IPfy9mhsosP50ENwXIgoAoXRPruRCoT8p69v9Ej_qgKII5yYKXFPAQ2DEiWiSmDlNI4e6-eYyRxL7dPokzQcAX7CuSCi-X7IEaheahgHPiXrC-LEYsNMz6QaE0ZaasXrrLz8XOaW7Q_Hz8nUYPh2CQXzLrQKMFt0a7MHZsC_LH_KhC49GWXcL_QJASgecPgCe2xNH1YervLnXi79B-3KH3cykmCyes92OJgzvXSv-_u19Hfc-OORgMgEAPmwMHtE9QOnMLSnOFZkuLo9BHGO1qOZYQWuojCXBqRjpU-1iWr3fTxXCLHsM8kElTNpa9xvUIb7C0z_pqfm5Wr_O5M2R3-BhaSP-OuI1YsPwpd1_kLgAzqA5Srk1-NFcyMjjYxNHA5RNucirREKl2otjLlJZQguSY6-RSNQYOH-HCE-vDO5o8BzIH5S_ozMKBxMTPgUFeEENmPcgp84-80zh7H45hca1rp2NUJu7cBOxzEOSbDX0w4B95J9QJ78gO05D4wislPsZMRAQslbAMEh_1DpcFYsmmNUO04JT8WhivZO3VcsT-MbKPJBtC-q97G47Oi6YOtY3gZ0OcPP2LQ5WGVjf2xKHK6UhZOUPfwaBT_NVqzRY4BxEdwulfpJME2CMtiXuSA9R0N_i1I5j19b-td2lSy2zJlYHauJBdzu1icF7YY061G3lfCNLS2JDVIZ0pbScr574UYv2jwy3KO2d-CmRStUsXtQj1u8aREOnFRL9wLLVT6p55S0eBQpqcyj4O6_D0ooMDptBni6zMbt0ME42-V2kGmg0m9oJRDbwANeqFC57XgfEwD7RCi8mlNaykTn46ooaEePGyYT1FgTkwVedwwcx5xolGMAvzZ56LNRcNVSjOM7yQuWOTWvBc3RcrfZe0TvVgs1euXhcOQSsyZfebOfuIyJ_cJr50zcJ_xfDKZvqLkOk2wckRMfpiO0lKpWwhtmjB25rNQhGtHpyu6FRTMr076sc2FDBL15FnzYkY9hNYHEpSGIEuAh3EcToQWRA9dCGpdcLKhqb5LDD 2 | [81,41,95]"ƒ!x8GgweBHupkyIsWCAoRd6cV4CaUlLwcHAAAAzFcAAAANnApdb7mminIjaEY6_b5kuMi019KvYF6c2mq-eO0ULgcEtFG6SH5AogR7PCidx8hQJgdVOfGRXaqa5h3xeFs6hCDS5EGI-f_TtYilFVv8VXHLxSyHjZn75yjLCpJbZ4YSIMH7GJylHdOwpr_KLxLSyMn7_GChYfgUFYsyqvR3AY33bDWCxKBO6Ewai-fGnt9noNTgk6Sw9j5mNoT5Pt_PXHfDn0mnDDSMiS3d_HWF4RPMGY4D08vCcGt_XHn4uRPRg9wqHK1PQuQLWoo8RkIlugAtMj7RzbeMLOa55IL1qtUA6od94yTS7yENwX9F7eRgZCbopTN9RkwkxgVPZhj45CB4_yotwwarz8MEixvZwDxyaUvKK1ozn-E1-muGpB_jbg6-44_wpZtV85IU7shb56s3oMs4o3J7EJs18mKL-UhsFaVhPNgtjZIVZCAIjb1dc6OcE68jIniTdcIFTirntNF8C2F_DoK6o_SbKTkcZIyZDx-zuCvfnntEtxpiQnDdj5qOe_xHOrAA8tsh88J1KPmQMCFFsQmCA6ZQ3d8eGJMzFVzpSdOtG4xExQzCjH5tgF0ugNCuhaLKY0w_cB7DrdE2kGIyxhK65tHgNMsxCJpJzO9Z21I7zz_jeMw0UKt2I_GKPG7QD4O5qDdivdPo8Mr_1T1lN4fc2PSXHOMP2rAvWqdqXzuGeGntFQPo-GHbt0jRLUiA_OOdCaGBkzYH8CdZ8TInp263mAwAtv6sEwcbLxwnPVi973zw8GX37LganiGAZQIkJVducADq8qdslspfO9KfEJqC35D8cum8OgeAgf2EpwiQanN7b9dYxWzmGOgi2hjXnU5k4gZwncWkHsi8WLML2QjvQY0o_ac1JuMKYIqKFYMLqm9SBPjD3ihK5_J_VpnG_gXMv-Zsmskm99MEy57-s663q5I_cxGSriS_psdA6sc4z3r-JTmIwB1Y3RgExsVKN7pqiGshLW1IiPYyP1rDIWfFT2cMH1HiI06a2cBtQHc2tNoyS45lTqUQrFb5zJagDlcK4AChqRQ-OiXqYO14ghoyVOmCs3QFWOILKP-C773iAOXUFTtd-5Btzh9gDAigcYmmtN2JhLRFKzehconHevBswV1Ga7N6S8nlZjbmSgJSPDnQ1rcmb2YY2y621bxYhIzkQ10XkXSCJVo0TIxlCRTHW80E0Q_mF6Q41iRAbOkJtQf9c77jOCYNgMlCajJACJx4ShgxQGKFGy_Qub-HjE8ICkgQBMNfTDVg67B5ymniRKiJazih5Y3JnwuUK1k46zB9A1S4poDSPtxaGhfyXjPYR3pOOPlT4ta0gfKFuQNS48Rn7bOLiv-D02hDPn2K7MRX7B-31J1SdhDjzNrYnD39VUZ-_7eQ0dwBXgNEk5e2Hhej5irNEZZkSHJgi7GuaqjiHItLRv857Sa8LeeWBjevMVzW_cp4fYaA7Nqq3HVMndck-on6pJdT9UMhC4T_fLooC3y56gb8SQweaQiilFoQbTb96pQzhuanJSIc3bKQh1Wv5Db4t7kX8Xi_GL9c_-rU8kKfXWT62Ho4NNx8Tx65hsvXucKhHpI01Gcx6Y2rSIfgXsbS7V5wjKWdzjIndkJgi11-DKbn9ZMSsHIqw6wcoixrx3aZQXdydyGVtkoBNQ5aYzNBu1o9ZUl9P0d8bJZIEEU78lyS1WpYV7LJiAly1zKmg-xlFG-HM20cZT9Hc0Hri_O7KQWH0S8AxtSTi-8UlPNCQYQFTxguIH7Az7xJBdcQdqrxtekvZQZWP8R2NFVgZFY-3aFUqMJ6WqqKjrOVcJSzKAAAa1w4wjefughgbXwgQYdBWbDwSBerhsJ7T8Zn9mFnbt1PzUCtGoWVgjIq9Ppmwdwe29KGTjOmdJXotCYs-qR2Cnq2KSLAl_AFCog7b0Tc3ApxRNzIfb6Ur5xPAkN8ta_WQ3kAdHdV33wuu5uiiPp39qbznaKMeh2_5h22MjT57WcunQ0CpjfK3HzuBMgdZccnnO1MZMYJWbrdJNhNmDY4-5q3LRQkwYtQ6dYAsSb9NXcXEkcjoT976HyYYl0KUwX32hnP2OCRRqQsNxmg09TqdEnbaH7NzDcMyBvizmeOxDCxHMNxDY2Qzu1mql7kvnH34cD1n4W2WZl-tTRIOgbTuVDbEQXYLLZH-v4up6rcxn0bcNn3we-cXSas10jXYHRtin2jWu5QGwse3hbPKtdCPYMzvp7pihpkz-BtDJPyyMmV7BfvqUGm8zn53FMo50MuZVQK9hFrSIHiRIF53wU2SwZqJRaKrYSiKLK4vMazvthC2IZCB-DSWZTzfzdLe0i6pLulr7IBPanthzlGVf2MUOYcT89zeTScI-QLFkPgEsdPLhSsN80lyqyV43uFAMf9fatLv2OeiNWfPFxz6ItryJlyEFdiiPbs99paPK6xJHIfSKWfQLxY9UIhDcX1a_pArOMiOPO67_4-QDE7gL7KepymXVaMW1rs4u6dxpLSvolbrMxTjDKvq50019Zz5O2yu-78YvqVfJ1wuCK4tkGCtPTQLLAQOXHDTkQJ5d4dWAE0FG64Y9UIPWKyCcMLkwhCLJEbrWc0PiJy0c26MELHn5iFBBrbxJzMwHgxf1Zd4FBFlyowgcm7I1EJFp1SOZjPn7dpK0bsdp0V7OlrOkTmSwPNsFWv7RNd-QssJeOfGpP47z4caorCuUthahuH2TZsBfay-mfFy6zzy0MK-FOoqU-WTyLJNvwSTwX22NFAXpgw6wC8XOYPiAc19t_B2rCWN3ZAvn0CDEHGTrYIh1JzFYjHfU_3SlIVWoWgoNu4lfWq6WGf_RBroApSM9LJbiGOnmuMYwK_KjGxxftmorccCw76LBQvaCpIw9miwon6IfENE0gMs1KSDEaqYCd14kQPcarofz_geMICO5nwpFQZ_jCVBxQuyQ1O76C11BmJyAQTFTZGZUpSWbt-jCLeM7ifcjy4UsU7KsdTvzFDFY-GHO0rDOwl9K5v7mycj5A-BjA99XyWEvbz9sXIo-icwWhe0iEKngmzLT45ypoTJgVve9WUpqx-1JOFeaSYciyEvW2AkhNxh7Ge_tmAjKrM7tgEcs48PgzGSfsgBBGal9tf3ifcY3z53yc5TwuanRe_3atxFrTCqrOBPVIfKbU99DSrdacRa46AOQTh7awatjWfcwPe8rDEhqEwYVzLWMk2BYuz8LF0r81DLItqBsfaqgyCxRiGN7-plpo_uCleDZbzf6CFkPJzDVI8La3ncy0dWg_WCI9LZ-1w39oTpKfMOJSNnrH42I19DpqxBdaXG6Bno_bstQbndVIkFs6oRE4ZodPMXBOXt-J9qYdr4ShzYm3iEx8xBfhAgSnU_ISWeiC0iuQ57EHdYMcqT4euKuByFHMH3MIshAW28Yff5OBSysBqnpj4OxecfgcmskFYn_ptk-5iy6tTXgWx6AML-DWCB8xtNr-0Gh8wfOT9d1MvR3VorppFSMm_40NQTXhjySBjiyGnoa5BmetJqdEzMiiH2pYKJvH5RCjM3xqY7f9iPtZscA* 1820701382q:¦05ALDjQotfLnX59IQIdk7xje2wPm4TyPdcslKa5F_k6YIrYn-oJLLN-xyE6irPoZvGULApGJk7AZJfmdqDNo71u9bNhipqzgTkGYDYjA2cgRjzsDmQzhcHDgGJ064F91S8JkfVuI-tDCE7FzjMmh1NHFE9xY1WiaT8y1C4nIovW2ejHhtPjDGSzRoAckWu0Zs53zPZA3Oql6d0SfEcYb6lI6zX8ewleOb1loMiffoBUSFiuF0-iSWiwpaz5qUadrhZugIr3OevpHTmOvClxDO4LuShUvgvtLG2Q79hO47zzexylGSaLUi-3yqDjxsmvk_nkOSItDCL9y_tEyrny6KDFo9cAaAtdKNyv_EX68HHQGON747ZYItXFVvtHB4b7skbEm0u2xSoMwsZ4JPGbXjxO2pjfGv0PfJemMNnBuser/hash_loginr(6LfiMsEZAAAAADTM7mh5JeS3_L69QZr6iOAsJU9t -------------------------------------------------------------------------------- /开源中国_需请求google的参数/data2.txt: -------------------------------------------------------------------------------- 1 | 48TunWH-ZrLteSwFVbw6tVnxÎ 03AGdBq26-77f7wflKojwAEcdu2CQs9bPRTS8rvd2AB8RW6VuUUbDJrYXhYq6B2J3Nzufq_sciYc-WSEjj1D2Ig6S8M86A1n3KwViAlbdIVOc3K-7kTzoKggN1mxIIyVAXZ5EcbVp7gN1dBAeg_HUpNLSDGjbnQxAoHy4wJtTM24feFv3d5qMBZVcbWGZpjaElthYr3QG2G-v2vJPGC5G6TZKHDit8769lAHXQdPKXr1DVZc8KrOeku07pXXqzCy74_M5FOcBHrYqkPZH1B6EpILlHtvbwk84mp7Q0J4o5SvDfdRwXnTdRatEWw33rZIWQNdMuj6EGtffzwYg27TEH5Qlmx3XW1H9t3O5PGUXU5gXTNSBzmD6nug1DCJSp8Id0SQg2etZv_FuV8oZZXmc_dYb-7f-4e_2kJhgGpesDOKSiR6-KNlBebQBjgl6IPfy9mhsosP50ENwXIgoAoXRPruRCoT8p69v9Ej_qgKII5yYKXFPAQ2DEiWiSmDlNI4e6-eYyRxL7dPokzQcAX7CuSCi-X7IEaheahgHPiXrC-LEYsNMz6QaE0ZaasXrrLz8XOaW7Q_Hz8nUYPh2CQXzLrQKMFt0a7MHZsC_LH_KhC49GWXcL_QJASgecPgCe2xNH1YervLnXi79B-3KH3cykmCyes92OJgzvXSv-_u19Hfc-OORgMgEAPmwMHtE9QOnMLSnOFZkuLo9BHGO1qOZYQWuojCXBqRjpU-1iWr3fTxXCLHsM8kElTNpa9xvUIb7C0z_pqfm5Wr_O5M2R3-BhaSP-OuI1YsPwpd1_kLgAzqA5Srk1-NFcyMjjYxNHA5RNucirREKl2otjLlJZQguSY6-RSNQYOH-HCE-vDO5o8BzIH5S_ozMKBxMTPgUFeEENmPcgp84-80zh7H45hca1rp2NUJu7cBOxzEOSbDX0w4B95J9QJ78gO05D4wislPsZMRAQslbAMEh_1DpcFYsmmNUO04JT8WhivZO3VcsT-MbKPJBtC-q97G47Oi6YOtY3gZ0OcPP2LQ5WGVjf2xKHK6UhZOUPfwaBT_NVqzRY4BxEdwulfpJME2CMtiXuSA9R0N_i1I5j19b-td2lSy2zJlYHauJBdzu1icF7YY061G3lfCNLS2JDVIZ0pbScr574UYv2jwy3KO2d-CmRStUsXtQj1u8aREOnFRL9wLLVT6p55S0eBQpqcyj4O6_D0ooMDptBni6zMbt0ME42-V2kGmg0m9oJRDbwANeqFC57XgfEwD7RCi8mlNaykTn46ooaEePGyYT1FgTkwVedwwcx5xolGMAvzZ56LNRcNVSjOM7yQuWOTWvBc3RcrfZe0TvVgs1euXhcOQSsyZfebOfuIyJ_cJr50zcJ_xfDKZvqLkOk2wckRMfpiO0lKpWwhtmjB25rNQhGtHpyu6FRTMr076sc2FDBL15FnzYkY9hNYHEpSGIEuAh3EcToQWRA9dCGpdcLKhqb5LDD 2 | [81,41,95]"É!ZGKgYkNHupkyIsWCAoRd6cV4CaUlLwcHAAAAzFcAAAAInAoyb7mminIjaEY6_b5kuMi019KvYF6c2mq-eO0ULgcEtFG6SH5AogR7PCidx8hQJgdVOfGRXaqa5h3xeFs6hCDS5EGI-f_TtYilFVv8VXHLxSyHjZn75yjLCpJbZ4YSIMH7GJylHdOwpr_KLxLSyMn7_GChYfgUFYsyqvR3AY33bDWCxKBO6Ewai-fGnt9noNTgk6Sw9j5mNoT5Pt_PXHfDn0mnDDSMiS3d_HWF4RPMGY4D08vCcGt_XHn4uRPRg9wqHK1PQuQLWoo8RkIlugAtMj7RzbeMLOa55IL1qtUA6od94yTS7yENwX9F7eRgZCbopTN9RkwkxgVPZhj45CB4_yotwwarz8MEixvZwDxyaUvKK1ozn-E1-muGpB_jbg6-44_wpZtV85IU7shb56s3oMs4o3J7EJs18mKL-UhsFaVhPNgtjZIVZCAIjb1dc6OdE68jIuhofnhY1PYQPr3bj2fby3geI8opYwX21WU4BSxn-vkjP0MicFCxA7vMd78OOzPMu_i03wuU98uGqS3ZYNb1gt-IDtSfwA0o5zWVd9BNqCowg4uOj5daxeC3qvbktMU2ogPrZ4mxc_TMBquFznAA1DaPazdBAhDdxMJhazfcGMH20ymqFb4ppS126hfw9ZXtexAMM_aBVNQTnjY_Wbsz2oHZEhsfh9hOSqkYGFuIFJxJRhb632tlCeBKxERxWzAxHDDeoa7rgd2y8g4hQylk2Q_d8kumd4tchbJVurXWrXNjWX19K8sHKYVfQaT1kBRkVLOg93Si_EHNUjjzT6xiu-P8qC_e_6_X7uNEm4dRJfmWOabXapbGZTyvP_rbxGcOz1EIOX5kNTe5zfhMgoYrz1IjGIRw3IGhnXWYKYH_XphiqG1oSjf-bppHWqfewIf7TinfAd6m_TTqi9hwa7hk8AxorXOsWH6rXGip6ASghkvj1b5uHfzn0Dq0Mo3vCfwvQTvF41mFS2hMZfoXt20MeETotXTAqrZCRB5nUk5kI-Tuo4zs9qB8msQwD_be4sLxWHKW7nA-_cN_2LSf9lnSisazmHp7OZQp_DB0Z9SzY4popQzdW1fYgEjvc0xUcFgkGYZ4R79fMD2o2QEQjyYpn4ouQgmvOpM5DEs3XVKVDyBWRWBidxTzWHUshphV0VRPJuqdc7WY8XtnOuOiIVlpI-r9KFu8r78EhC9daHd6qTGBselCZD3f5GT3zNI5cGfe520JheM0ksF7SL8m6FN8ngF0fAu6yxcKK4pVQSs84T0MxJe_v7eo-lhVrtM4KI7TvKa-2aJZEIIdpg-M212bwIqM9-szOPDYupd8agz8M6kR42gyUt2iQJh1CtWMbNCI3gJ_FeMb6_nb44q4H6HKFSawEqkFvtPHdeaDUqhB3-IFluBoEdf8rcqVRSFcBkwFIqacILnV3umtJyoKeCh6zO6s87wHaFC4yv3awsiFjGj4-kPOJ0gUHfHHNUkfxCTAUMN4teOX4oVg3gC5yRjLT3qIhfRkpe0nmUQ_p1CFFMSZ1xuGSAySZZ-uSRGdoA1IlJNBhVlrlVqgYg8WabEUFROtVJW3epMBOVMI7mOaPoyLabFkEGO-JoHiVoyKG5_Ap7xgiiafSEq7-OQGtiYj2rq6KlMczlTHOOego8qaR2CBaXsJN_1hj5olHgmkfZKP27YJsbnPFMy3GZ5p1yKgtcpMxZSepIPl-sArgYTa_YOHneUZRju92dDKz02rJPl0TFwd7T5uaZZTbNIpXXxU0QYj6LoXOcXWG9Nif3_hqLSK8CR7dCuF1vDRGHS3if6CfpKmChaFUv69jqbsTsT0jozLjDATLoQVAakqU6iN9dRoY7HOP11MrELiqHKsxzY7ZHJSuKedH-22VlIevI_UYLnkXMgTDFwltiEnBY9XYX2-79ErE4jj9jfe3gki5hPzWJKUn5jDzGjFMTg6ieWlDrDOPcrm1udArNkc58vkgPqWumGQoxa45dvU6YLVrQCftksftvOw9UOvAexqKy2qswc1O0nRNnbUCP_m610tAyFH7SqTktR618g1itn0_OoRKJSZ0uPahvbvg5iTQo-n0JgYBh_i5Vyk_MeOczzDY2y-X0mY4LLRZhcI0qjo7ZJvXERLef4y9GDKioGMU1zdUZEPBumjAvnlwctZYVSYCqbPNCv9VZmVWYJ2heUDPGuVKstpgq3Q47Bqc_pMOy_d3GqMJi6i19c9XCNJ59-ZhheI8ZLMItmXVc_hHJbAuyJ5H8tO0MTAfmNGtZhsgXlSVIG4pCae84JpvvBHRMTv1A1fYbZUbqkVMTXrniBFZyYQCamYvOQsmHa_4cKZP0bO87hQRnfRR3oTycpD9MK2rjQBvOigtxdZtXyuI7OLyRwXQnlgqbUvdDnZONR1Jthc2L2mugOEfa9SByPaO9VdEP6-nnfht3f-pRv4_ebfBaTQF7lUiqQzW-twe_7q7ftshHrUMxiq8XJomrsuDKIkeLw3tV2sCVFkA2T15srJLDdAY6Xjl2ZfVIUQkFwwtpI_KXgb6IRv5GVh7Y04fmVLn-0Qw4D5uXgez4gFqXXncJMm2wU74XCBkvnDOYMEdnGSwiX4JzRBhxaEu6S-bhVK9beOmUK3IAMVwWnVS39WPnpqrdWycW3Uh5OGTOU3c3QsPXuRjxP0QY5WTGdr_ezQgAPcL_Ut8yByzdfxsjGOadlS_hUH3aW5aRLxT7op4P8brAYQWIlqIZi5Hcoz0AN22KrXfHFspJgN27QA72M1DQYZ94Mvw-lhizUlfdPAER8afelyHjc8qaDFQIu0ZfCECv0K6NUqD60s5uXVa67UagUjJkE54Q7uvRrNHQ0z2fpLGhake-tJcC85FzzGnGpM87frIUBsNG_n4Njz4NXHuoTvFufLuWhLNqacCb-oMI8sQCjKSplWM2BISvRW4_ahfw8aueKhcFinP7bLc3zg6qhy9R-7zqL3Zj_LBDRWUwcxNHcbaRhJT5itbZQcLSplZGyQQ8Cnt4MODHl7lVU1vR_lF8hmMJJB3IMBNs8-iBtX3Yc-iYrZB9QfNlRl7sDMsC9sZ21pQ85RhC-4w92KngnZCAxPPE0GDDsP5nO7vH-x7QxH6OKOpOIi-L9fYKOQWGQWmdqwNtQd4OEK9oENNSZfdpfvALYxb5n9GQlNg5bcTM5TdpYvEfwJf61qrwXYjdZu1O6p2HNArR1U8jlQgbOYMIUCh9LiYdSshaob_WNpoUxiMCRFCbbeaPlw62WVib2xI3g16cSGzLhCnUiFpl8IoEXHwQeV03CCrqyYsUvT1lar3O8146mC80wCCtQf9V7J5SOenDT_WHzbJHXPv313XYKav1cPTDvKZVKvlzDMFGBzL-k_iIeZlv9GYnIx-CTi9B7Vo1LZhssmFVwAhZ1c5zjY0bb50mqI5n8SX6a8_9NAvauFefrsXzyF5KZ07UDiXok-Oe3c8AcpFxzJhOkkW-v6DtlxX0RWjlptULix* 7588239452q:05ALDjQotDEy4m_AHoAijaSkpI0_FxSauWxHpiKtW0KqM3uo5dWctOgKlRYPQiHs6KxBi2VilcTy7RPWUe6Bl0W3Rdu4m730JA4ruS2KHEViR5n2Df6WgFPof-FrEOosDQnHiFFHeX5m34E3TM4gwcHsXz0kgCdIUfaOzqLJI98jh0fTYzfc_OMc3vDsYuFnC0UuMc2aHnnuuY3iahKTco90quuvrHmGMdOAkaxW5VjapbUoLJwBr-ux5xE970Mf4Buser/hash_loginr(6LfiMsEZAAAAADTM7mh5JeS3_L69QZr6iOAsJU9t -------------------------------------------------------------------------------- /开源中国_需请求google的参数/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.oschina.net/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def load_data(self, path): 22 | data = {} 23 | with open(path, "rt", encoding="utf-8") as f: 24 | read = f.readlines() 25 | for line in read: 26 | split_ = line.split(":") 27 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 28 | return data 29 | 30 | def get_pwd(self): 31 | with open('./get_pwd.js', encoding='utf-8') as f: 32 | js_pwd = f.read() 33 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 34 | return pwd 35 | 36 | def login_(self): 37 | pwd = self.get_pwd() 38 | print(pwd) 39 | 40 | 41 | if __name__ == '__main__': 42 | user = "" 43 | pwd = "222222" 44 | 45 | login = Login(user, pwd) # TODO: 输入账号&密码 46 | login.login_() 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /微博_未完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: 4 | Modify: 已经不适用 微博登录已经必须使用手机短信验证码 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.sess.headers = { 20 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 21 | } 22 | self.login_url = "" 23 | 24 | def load_data(self, path): 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def get_pwd(self): 34 | with open('./get_pwd.js', encoding='utf-8') as f: 35 | js_pwd = f.read() 36 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.user, self.pwd) 37 | return pwd 38 | 39 | def login_(self): 40 | pwd = self.get_pwd() 41 | print(pwd) 42 | 43 | 44 | if __name__ == '__main__': 45 | user = "156464614" 46 | pwd = "222222" 47 | 48 | login = Login(user, pwd) # TODO: 输入账号&密码 49 | login.login_() -------------------------------------------------------------------------------- /搜狐_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.sohu.com/ 3 | Author:jing 4 | Modify:2020/10/28 5 | Notes: 部分参数修改之后 通用于 搜狐号(https://mp.sohu.com/mpfe/v3/login) 6 | """ 7 | 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import time 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers ={ 21 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 22 | "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 23 | "accept-encoding": "gzip, deflate, br", 24 | "accept-language": "zh-CN,zh;q=0.9", 25 | "cache-control": "max-age=0", 26 | } 27 | self.login_url = "https://v4.passport.sohu.com/i/login/116005" 28 | 29 | def get_pwd(self): 30 | with open('./get_pwd.js', encoding='utf-8') as f: 31 | js_pwd = f.read() 32 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 33 | return pwd 34 | 35 | def login_(self): 36 | self.sess.get("https://pv.sohu.com/suv/?t?=1603793150298201_2560_1440?r?=") 37 | pwd = self.get_pwd() 38 | 39 | 40 | data = { 41 | "userid":self.user, 42 | "password": pwd, 43 | "persistentCookie": "1", 44 | "appid": "116005", 45 | "callback": "passport403_cb" + str(int(time.time()*1000)) 46 | } 47 | 48 | pprint(data) 49 | 50 | self.sess.headers["referer"] = "https://www.sohu.com/" 51 | self.sess.headers["origin"] = "https://www.sohu.com" 52 | 53 | res = self.sess.post(self.login_url, data=data) 54 | print(res.content.decode()) 55 | 56 | 57 | if __name__ == '__main__': 58 | user = "" 59 | pwd = "" 60 | 61 | login = Login(user, pwd) # TODO: 输入账号&密码 62 | login.login_() -------------------------------------------------------------------------------- /搜狐视频_cookies有问题/data.txt: -------------------------------------------------------------------------------- 1 | accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 2 | accept-encoding: gzip, deflate, br 3 | accept-language: zh-CN,zh;q=0.9 4 | cache-control: max-age=0 5 | content-length: 129 6 | content-type: application/x-www-form-urlencoded 7 | cookie: 8 | origin: https://tv.sohu.com 9 | referer: https://tv.sohu.com/ 10 | sec-fetch-mode: nested-navigate 11 | sec-fetch-site: same-site 12 | sec-fetch-user: ?1 13 | upgrade-insecure-requests: 1 14 | user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 -------------------------------------------------------------------------------- /搜狐视频_cookies有问题/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://tv.sohu.com/ 3 | Author:jing 4 | Modify: 2020/12/10 5 | Notes: 目前登录未成功 应该是cookies 有问题 没有获取到主要的cookies 后续查漏会补充 6 | """ 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 22 | "accept-encoding": "gzip, deflate, br", 23 | "accept-language": "zh-CN,zh;q=0.9", 24 | "cache-control": "max-age=0", 25 | # "content-length": "129", 26 | "content-type": "application/x-www-form-urlencoded", 27 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 28 | "origin": "https://tv.sohu.com", 29 | "referer": "https://my.tv.sohu.com/user/reg/reginfo.do?bru=https%3A//tv.sohu.com/", 30 | } 31 | self.login_url = "https://v4.passport.sohu.com/i/login/107405" 32 | 33 | def load_data(self, path): 34 | data = {} 35 | with open(path, "rt", encoding="utf-8") as f: 36 | read = f.readlines() 37 | for line in read: 38 | split_ = line.split(":") 39 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 40 | return data 41 | 42 | def get_pwd(self): 43 | with open('./get_pwd.js', encoding='utf-8') as f: 44 | js_pwd = f.read() 45 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 46 | return pwd 47 | 48 | def login_(self): 49 | self.sess.get("https://my.tv.sohu.com/user/reg/reginfo.do?bru=https%3A//tv.sohu.com/") 50 | self.sess.get("https://pv.sohu.com/suv/?t?=1611564294005725_2560_1440?r?=https://tv.sohu.com/") 51 | self.sess.get("https://v4.passport.sohu.com/i/cookie/common?callback=passport403_cb1611564294965&_=1611564294971") 52 | 53 | self.sess.headers = self.load_data("data.txt") 54 | 55 | pwd = self.get_pwd() 56 | data = { 57 | "userid": self.user, 58 | "password": pwd, 59 | "persistentCookie": "1", 60 | "appid": "107405", 61 | "callback": "passport403_cb" + str(int(time.time()*1000)), 62 | } 63 | 64 | pprint(data) 65 | self.sess.cookies["lastpassport"] = self.user 66 | self.sess.cookies["t"] = str(int(time.time() * 1000)) 67 | print(self.sess.cookies) 68 | res = self.sess.post(self.login_url, data=data) 69 | print(res.content.decode()) 70 | 71 | 72 | if __name__ == '__main__': 73 | user = "" 74 | pwd = "" 75 | 76 | login = Login(user, pwd) # TODO: 输入账号&密码 77 | login.login_() -------------------------------------------------------------------------------- /搜狗翻译/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/搜狗翻译/__init__.py -------------------------------------------------------------------------------- /搜狗翻译/get_data.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import requests 8 | import uuid 9 | import hashlib 10 | import os 11 | from time import time 12 | from random import random 13 | from pprint import pprint 14 | 15 | 16 | 17 | DEBUG = os.getenv("DEBUG") 18 | cache_dir = os.getenv("SOGOU_CACHE_DIR", os.path.expanduser("~/.sogou/")) 19 | 20 | 21 | def get_seccode(): 22 | import js2py 23 | 24 | UA = ( 25 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 " 26 | "(KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" 27 | ) 28 | 29 | headers = { 30 | "Sec-Fetch-Mode": "no-cors", 31 | "User-Agent": UA, 32 | "Accept": "*/*", 33 | "Sec-Fetch-Site": "same-origin", 34 | "Referer": "https://translate.sogou.com/", 35 | "Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7", 36 | } 37 | 38 | def get_suv(): 39 | return str(int(time() * 1000000) + int(random() * 1000)) 40 | 41 | def get_seccode_cookies(): 42 | res = requests.get("https://translate.sogou.com/", headers=headers) 43 | return { 44 | "SNUID": res.cookies.get("SNUID"), 45 | "SUID": res.cookies.get("SUID"), 46 | "ABTEST": res.cookies.get("ABTEST"), 47 | "IPLOC": res.cookies.get("IPLOC"), 48 | "SUV": get_suv(), 49 | } 50 | 51 | cookies = get_seccode_cookies() 52 | response = requests.get( 53 | "https://translate.sogou.com/logtrace", headers=headers, cookies=cookies 54 | ) 55 | if DEBUG: 56 | print(response.status_code, response.text) 57 | text = response.text 58 | rv = js2py.eval_js(text + "; window.seccode;") 59 | return str(rv) 60 | 61 | 62 | def read_file(path): 63 | path = os.path.expanduser(path) 64 | path = os.path.expandvars(path) 65 | 66 | if os.path.isfile(path): 67 | with open(path) as f: 68 | return f.read() 69 | return None 70 | 71 | 72 | def md5(data): 73 | if isinstance(data, str): 74 | data = data.encode() 75 | return hashlib.md5(data).hexdigest() 76 | 77 | 78 | def write_file(path, content): 79 | path = os.path.expanduser(path) 80 | path = os.path.expandvars(path) 81 | 82 | prepare_dir(path) 83 | with open(path, "w") as f: 84 | return f.write(content) 85 | 86 | 87 | def prepare_dir(path): 88 | if not path.endswith("/"): 89 | path = os.path.dirname(path) 90 | 91 | if not os.path.isdir(path): 92 | os.makedirs(path) 93 | 94 | 95 | def get_translate(zh): 96 | url = "https://fanyi.sogou.com/reventondc/translateV2" 97 | headers = { 98 | 'Sec-Fetch-Mode': 'cors', 99 | 'Sec-Fetch-Site': 'same-origin', 100 | 'Origin': 'https://translate.sogou.com', 101 | 'Accept-Encoding': 'gzip, deflate, br', 102 | 'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7', 103 | 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36', 104 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 105 | 'Accept': 'application/json', 106 | 'Referer': 'https://translate.sogou.com/', 107 | 'X-Requested-With': 'XMLHttpRequest', 108 | 'Connection': 'keep-alive', 109 | "Cookie": "SUID=723BCC6F1508990A000000005EFD7C20; SUV=1593670689438195; pgv_pvi=4246437888; ssuid=1271548107; ABTEST=4|1593679468|v17; __guid=3937703.2217409352383618000.1593765758409.0383; SGINPUT_UPSCREEN=1593765759567; usid=dYvl6f6uw33SF2Sv; sw_uuid=3807296512; SMYUV=1594176419630287; UM_distinctid=1732c51b7f58cf-099a6b00e2ac15-376b4502-384000-1732c51b7f660f; wuid=AAHA6HCYMAAAAAqgDFLFhQAAkwA=; ad=vkllllllll2Kp5YDlllllVDDcHclllllbDZEtkllll9lllll9Zlll5@@@@@@@@@@; cd=1598410682&0f6a40761a6bd877a0b5d435ff4676f4; IPLOC=CN1100; SNUID=3DCD2480EFEB40D2F957E1CFEFEBBAE3; ld=pkllllllll2W@gZkg1g5mOdkb5VKStMfbDZEtkllllwlllllRZlll5@@@@@@@@@@; LSTMV=316%2C358; LCLKINT=1118" 110 | } 111 | 112 | data = { 113 | "from": "auto", 114 | "to": "en", 115 | "text": zh, 116 | "client": "pc", 117 | "fr": "browser_pc", 118 | "pid": "sogou-dict-vr", 119 | "dict": "true", 120 | "word_group": "true", 121 | "second_query": "true", 122 | # "uuid": str(uuid.uuid4()), 123 | "needQc": "1", 124 | "s": "", 125 | } 126 | key_file = os.path.join(cache_dir, "key.txt") 127 | key = read_file(key_file) 128 | if not key: 129 | key = get_seccode() 130 | write_file(key_file, key) 131 | a = f"{data['from']}{data['to']}{data['text']}{key}" 132 | 133 | data["s"] = md5(a) 134 | 135 | r = requests.post(url, data=data, headers=headers) 136 | return r.content.decode() 137 | 138 | 139 | text = "挺好" 140 | translate_ = get_translate(text) 141 | pprint(translate_) 142 | 143 | -------------------------------------------------------------------------------- /斗鱼_密码加密完成_但后续有点选验证码/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.douyu.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def load_data(self, path): 23 | data = {} 24 | with open(path, "rt", encoding="utf-8") as f: 25 | read = f.readlines() 26 | for line in read: 27 | split_ = line.split(":") 28 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 29 | return data 30 | 31 | def get_pwd(self): 32 | with open('./get_pwd.js', encoding='utf-8') as f: 33 | js_pwd = f.read() 34 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 35 | return pwd 36 | 37 | def login_(self): 38 | pwd = self.get_pwd() 39 | print(pwd) 40 | 41 | 42 | if __name__ == '__main__': 43 | user = "" 44 | pwd = "222222" 45 | 46 | login = Login(user, pwd) # TODO: 输入账号&密码 47 | login.login_() 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /新华电子邮局_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/新华电子邮局_已完成/captcha.jpg -------------------------------------------------------------------------------- /新华电子邮局_已完成/data.txt: -------------------------------------------------------------------------------- 1 | rlogin: 1603087832931 2 | F_lang: {F_lang} 3 | F_tm: {F_tm} 4 | F_loginkey: 1603087805 5 | F_logintype: 0 6 | F_rsapassword: fDMY6aR6dv4WSlg+id4BPTW4F9BqW59X9AWwHr3i6Ol3Da50j/fDUi67BD1C40qHFBtNQ9SeOC7CZieJieyVbCVDEV53DFveoHq9xaKLtk0veulsB5Wq4XMe21CJXP8UhE/6JOc+tTn1Hi8CF5rahpoHa/KTRfAaAGnWgWde/90= 7 | F_email: 1111111 8 | F_domain: xinhuanet.com 9 | passText: 密码 10 | F_password: 11 | F_code: 8n2q 12 | F_save_id: 1 -------------------------------------------------------------------------------- /新华电子邮局_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://mail.xinhuanet.com 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | 10 | 11 | class Login(): 12 | def __init__(self, user, pwd): 13 | self.user = user 14 | self.pwd = pwd 15 | self.sess = requests.session() 16 | 17 | def get_captcha(self): 18 | url = "https://mail.xinhuanet.com/t_img.php?_d=Mon,%2019%20Oct%202020%2006:34:47%20GMT" 19 | 20 | response = self.sess.get(url) 21 | with open("captcha.jpg", "wb") as f: 22 | f.write(response.content) 23 | 24 | def load_data(self, path): 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def get_pwd(self): 34 | with open('./get_pwd.js', encoding='utf-8') as f: 35 | js_pwd = f.read() 36 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 37 | return pwd 38 | 39 | def login_(self): 40 | self.get_captcha() 41 | data = self.load_data("data.txt") 42 | pwd = self.get_pwd() 43 | print(pwd) 44 | data["F_rsapassword"] = pwd 45 | data["F_email"] = self.user 46 | data["F_code"] = input("请输入验证码:") 47 | 48 | 49 | if __name__ == '__main__': 50 | 51 | login = Login("", "") # TODO: 输入 账号 密码 52 | login.login_() 53 | -------------------------------------------------------------------------------- /易车网_加密完成_公共参数缺失/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/易车网_加密完成_公共参数缺失/captcha.jpg -------------------------------------------------------------------------------- /易车网_加密完成_公共参数缺失/data.txt: -------------------------------------------------------------------------------- 1 | txt_LoginName: 18546254871 2 | txt_Password: 2fQraBcoauBlpY0EVkbMjj/5OeQtEjk3Ms5fAskiNRBpYPqhioj6X6nf+mB67KVs7qKlqizSmpOrGx0yUZdRPOOIke5GdHiHrcyeNPHLsj4r4n4sWqTZpvaIN5PVRa2PD9TuENXfGusHuz+CTgVaZcqCnLSmkgUN23ZPhP25XKA= 3 | txt_Code: 4087 4 | cbx_keepState: true 5 | returnurl: http://www.bitauto.com/ 6 | guid: fdb4a042-e420-0960-1301-79f1c9415707 7 | Gamut: true -------------------------------------------------------------------------------- /易车网_加密完成_公共参数缺失/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://i.yiche.com/authenservice/login.html?returnurl=http%3A%2F%2Fwww.bitauto.com%2F 3 | Author:jing 4 | Modify:2020/11/10 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | import random 12 | import uuid 13 | import re 14 | 15 | 16 | class Login(object): 17 | 18 | def __init__(self, user, pwd): 19 | self.user = user 20 | self.pwd = pwd 21 | self.sess = requests.session() 22 | self.sess.headers = { 23 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 24 | "accept": "application/json, text/javascript, */*; q=0.01", 25 | "Accept-Encoding": "gzip, deflate", 26 | "Accept-Language": "zh-CN,zh;q=0.9", 27 | "Referer": "https://i.yiche.com/authenservice/login.html?returnurl=http%3A%2F%2Fwww.bitauto.com%2F", 28 | "Host": "i.yiche.com", 29 | "Origin": "https://i.yiche.com", 30 | 31 | } 32 | self.login_url = "https://i.yiche.com/ajax/Authenservice/login2.ashx" 33 | 34 | def get_pwd(self): 35 | with open('./get_pwd.js', encoding='utf-8') as f: 36 | js_pwd = f.read() 37 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 38 | return pwd 39 | 40 | def load_data(self, path): 41 | data = {} 42 | with open(path, "rt", encoding="utf-8") as f: 43 | read = f.readlines() 44 | for line in read: 45 | split_ = line.split(":") 46 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 47 | return data 48 | 49 | def get_captcha(self, guid): 50 | url = "http://i.yiche.com/authenservice/common/CheckCode.aspx?guid=" + guid 51 | response = self.sess.get(url) 52 | with open("captcha.jpg", "wb") as f: 53 | f.write(response.content) 54 | 55 | def login_(self): 56 | try: 57 | self.sess.get("https://g.yccdn.com/autolog?v=" + str(int(time.time() * 1000))) 58 | 59 | data = self.load_data("./data.txt") 60 | res = self.sess.get( 61 | 'https://i.yiche.com/authenservice/login.html?returnurl=http%3A%2F%2Fwww.bitauto.com%2F') 62 | url = re.findall("hm.src = \"(.*?)\";", res.content.decode())[0] 63 | cookies_ = re.findall("https://hm.baidu.com/hm.js\?(.*)", url)[0] 64 | self.sess.get("https://g.yccdn.com/autolog?v=" + str(int(time.time() * 1000))) 65 | self.sess.get(url) 66 | 67 | pwd = self.get_pwd() 68 | 69 | data["txt_Password"] = pwd 70 | data["txt_LoginName"] = self.user 71 | 72 | guid = str(uuid.uuid4()) 73 | self.get_captcha(guid) 74 | data["txt_Code"] = input("请输入验证码:") 75 | data["guid"] = guid 76 | pprint(data) 77 | 78 | self.sess.headers["Referer"] = "https://i.yiche.com/authenservice/login.html" 79 | self.sess.headers["Origin"] = "https://i.yiche.com" 80 | 81 | self.sess.cookies.set("Hm_lvt_" + cookies_, str(int(time.time()))) 82 | 83 | self.sess.cookies.set("Hm_lpvt_" + cookies_, str(int(time.time()))) 84 | 85 | res2 = self.sess.post(self.login_url, data=data) 86 | 87 | print(res2.content.decode()) 88 | 89 | 90 | except requests.exceptions.ConnectionError as e: 91 | print("请求频繁") 92 | 93 | 94 | 95 | if __name__ == '__main__': 96 | user = "" 97 | pwd = "" 98 | 99 | login = Login(user, pwd) # TODO: 输入账号&密码 100 | login.login_() 101 | 102 | -------------------------------------------------------------------------------- /有赞网_已完成/data.txt: -------------------------------------------------------------------------------- 1 | countryCode: +86 2 | mobile: 18513606 3 | password: Ptq0xFlidjAvSTTyfQJrgQ== 4 | passwordLength: 12 5 | passwordLevel: 1 6 | autoLogin: false 7 | ticket: aa6f707ab7f19e496d4f3dff8cd4d13e 8 | csrf_token: 110337354065895908877902543775428331383124536721455083470054597370449921147130 -------------------------------------------------------------------------------- /有赞网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://account.youzan.com/login?fromSource=SOURCE_PC 3 | Author: jing 4 | Modify: 2020/10/22 5 | 6 | """ 7 | 8 | 9 | import time 10 | import execjs 11 | import requests 12 | from pprint import pprint 13 | import re 14 | 15 | 16 | class Login(object): 17 | 18 | def __init__(self, user, pwd): 19 | self.user = user 20 | self.pwd = pwd 21 | self.sess = requests.session() 22 | self.login_url = "https://account.youzan.com/api/login/by-pass-with-tencent-image.json" 23 | 24 | def load_data(self, path): 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def get_pwd(self): 34 | with open('./get_pwd.js', encoding='utf-8') as f: 35 | js_pwd = f.read() 36 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 37 | return pwd 38 | 39 | def login_(self): 40 | 41 | data = self.load_data("data.txt") 42 | data["mobile"] = self.user 43 | 44 | csrf_token_response = self.sess.get("https://account.youzan.com/login?fromSource=SOURCE_PC") 45 | data["csrf_token"] = re.findall("csrf_token\":\"(.*?)\"", csrf_token_response.content.decode())[0] 46 | 47 | ticket_res = self.sess.get("https://passport.youzan.com/api/captcha/get-behavior-captcha-token.json?bizType=15").json() 48 | data["ticket"] = ticket_res["data"] 49 | 50 | pwd = self.get_pwd() 51 | data["password"] = pwd 52 | data["passwordLength"] = str(len(self.pwd)) 53 | pprint(data) 54 | 55 | res = self.sess.post(self.login_url) 56 | print(res.content.decode()) 57 | 58 | if __name__ == '__main__': 59 | user = "" 60 | pwd = "" 61 | 62 | login = Login(user, pwd) # TODO: 输入账号&密码 63 | login.login_() -------------------------------------------------------------------------------- /淘宝_已完成/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/淘宝_已完成/__init__.py -------------------------------------------------------------------------------- /淘宝_已完成/__pycache__/login.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/淘宝_已完成/__pycache__/login.cpython-36.pyc -------------------------------------------------------------------------------- /淘宝_已完成/get_data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/淘宝_已完成/get_data/__init__.py -------------------------------------------------------------------------------- /淘宝_已完成/get_data/get_data.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from requests import session 3 | from lxml import etree 4 | import os 5 | import sys 6 | import re 7 | os.chdir(os.path.dirname(__file__)) 8 | sys.path.append("..") 9 | from login import Login 10 | from pprint import pprint 11 | import json 12 | 13 | 14 | class GetData(): 15 | def __init__(self): 16 | self.base_url = "https://s.taobao.com/search?q=%E5%9B%BE%E4%B9%A6%E9%9F%B3%E5%83%8F&data-value=sale-desc" 17 | self.sess = Login(input("输入账号"), input("输入密码")).login_() 18 | 19 | def get_data(self): 20 | pass 21 | 22 | def run(self): 23 | 24 | if self.sess: 25 | res = self.sess.get(self.base_url) 26 | print(res.content.decode()) 27 | # 多次有滑动验证 - 霸下 28 | data = json.loads(re.findall("g_page_config = (.*);", res.content.decode())[0]) 29 | for i in data["mods"]["itemlist"]["data"]["auctions"]: 30 | print(i["title"]) 31 | 32 | # html = etree.HTML(res.content.decode()) 33 | # 34 | # div_list = html.xpath("//div[@class='items']/div") 35 | # 36 | # for div in div_list: 37 | # div.xpath("./") 38 | # 39 | # print(res.content.decode()) 40 | 41 | 42 | if __name__ == '__main__': 43 | getdata = GetData() 44 | getdata.run() -------------------------------------------------------------------------------- /淘宝_已完成/get_data/mode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 18 | 19 | 20 | 33 | 34 | 35 | 38 | 39 | 52 | 53 | -------------------------------------------------------------------------------- /淘宝_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.taobao.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | Notes:2020/12/14发现得定期更新 ua 参数 但execjs 生成ua的方法执行还是无法正常返回, 后续解决生成ua问题 6 | """ 7 | 8 | import execjs 9 | import requests 10 | import re 11 | import sys 12 | import os 13 | from pprint import pprint 14 | os.chdir(os.path.dirname(__file__)) 15 | 16 | 17 | class Login(object): 18 | 19 | def __init__(self, user, pwd): 20 | self.login_url = "https://login.taobao.com/newlogin/login.do?appName=taobao&fromSite=0" 21 | self.session = requests.Session() 22 | self.pwd = pwd 23 | self.user = user 24 | 25 | def get_pwd(self): 26 | with open('./get_pwd.js', encoding='utf-8') as f: 27 | js_pwd = f.read() 28 | 29 | pwd = execjs.compile(js_pwd).call("getPwd", self.pwd) 30 | return pwd 31 | 32 | # 加载 data数据 33 | def read_data(self): 34 | data = {} 35 | with open("./login_data.txt", "rt", encoding="utf-8") as f: 36 | read = f.readlines() 37 | for line in read: 38 | 39 | split_ = line.split(":") 40 | data[split_[0]] = split_[1].replace("\n", "").replace(" ", "") 41 | data["loginId"] = self.user # 重置用户名 42 | data["password2"] = self.get_pwd() # 重置密码 43 | return data 44 | 45 | # 登录,未加成功与否的判断 46 | def login_(self): 47 | data = self.read_data() 48 | 49 | self.session.post(self.login_url, data=data) 50 | 51 | r2 = self.session.get("https://i.taobao.com/my_taobao.htm?spm=a21bo.2017.754894437.3.5af911d9fM97Ej&ad_id=&am_id=&cm_id=&pm_id=1501036000a02c5c3739") 52 | # print(r2.content.decode()) 53 | find = re.findall(self.user, r2.content.decode("gbk")) 54 | if len(find) > 0: 55 | return self.session 56 | else: 57 | return False 58 | 59 | 60 | if __name__ == '__main__': 61 | # TODO: 需要更换logib_data.txt中的ua 参数 62 | login = Login("", "") # TODO: 输入 账号 密码 注意此处输入账号名称 63 | login_sc = login.login_() 64 | print(login_sc) 65 | -------------------------------------------------------------------------------- /淘宝_已完成/login_data.txt: -------------------------------------------------------------------------------- 1 | loginId: 2 | password2: 8fa63b1c7c42f21e47691410edb6cf9d7a1a867cfc2280bd79a0bcab3cdd02d96fcc53eeebe32feef1fa114855d401179e38392d6b33b8846ceeba8621e205b535b91e9bffa1c67fb1c03bb178d3b4470b12c8b1428e1e1a46ba310b962f33d79e27795bb3b43a4dac0b33e738bad38fc697e9926dd9388e43d4c5d6d6abdfb7 3 | keepLogin: false 4 | ua: 139#00704q3p6vYkT0tetQpHc6J4g2m60d0nNa4QNqsIuQRCk0Lwz0ygPli402lL07yUcvIFfAE5/DgU8EFiN03+c1sLg2m6070hc6ciIJl1tZClut2bhRmdgy+dF/RdP3zWO3TFXkfLddRA5isNrxiezn67bdgDDDiq7cITg0deJR7BWDSoHVlnf3P0cSybnFiRHalZ7BQMtK4Co61FSqguzrU1m4pSfcaHHZeY4d1ih6G4ILBjVqsDiKnKIFxu2LkKCL8wJGxj2hbHI6sLfqdDgvdZIl7j8vS4Cbiji9QMPrlePq4ylblElGJpdXf3nR4CHXG7S7HFIhpCkb6VWq0X6hSZIoV3zRbCKulGN3frdvbHkaNuQqeuiEUEIhjFUFkmiLW6UGnBfN/48bBCPaVukbya2jtF2qa8EZGep2os8algfqLRsVoUf3P00VSWVSsXPD0WHkSVT3CK0DSw1VVpf3PW0zfWHiiLm7LVDHSnv3Pq0RNWDVVVFR2YhyLQVSsqPJ7WBVSVv3PX07WWHVVmf3P00VSWVSsXP03DHHLkW2v94UruSQxytUHs9Sfo4tVuszMByV3fTriJ89SyV4cGcyzqYyiJMnUft6d4eBdq6Pc/0Fm551v335zI2XZJn2iqlvH+V1s8AYN7KdHzHPK0UpfIvCg+zdR8FyfaJ8xcgRFB19G3FYVkVL3aEW0hnqifLDvypUmTpIyAQjjKAC4sJlaQkhacQ3bat3O/ZuDpQcuD/wKSGuabnOoPrNUM3PUOWJ63GQdbA0uPTEWfuiAyN1e21xcdoh+9jfSSYXb9GP3Eb0dl9Oag8dC2JZVLY4KnXLUy6dye5Ur2dRcnoP9dRSvw+l0P3kFqDzMWiL+J/T6VRgbfAlh7lTNkhMkVxSYRIStgtFebLTpzKYRt7D5orpfaT3to1yIvC7C9NB9/MhbWe619MLX90Hbnzd0MegnADERVfYYPWePoV+RkW7bAIz0FK+D5cOg3yrNt4ayZVVR2b/1hyqKG4SGXQ/7j4+yufYAwXI9Mptp80++jJOGq6AFFJaIstzbIVtrpAKiAkoY69flbPAx1r6Ds1n/ky6DuOykdQcLpqxsdLRCB8BlBEUB86MayCJ3GIK/lwlTjLdrUgwxECN2T30CBFWWwQjdYEW5OXy+msU3OXcHWR+ITI3yWNEVeGLaqvUu2LI8/Q3Olt96DFDM22uyZb+yJISCDCeFfaYQzvWgOkQeaCoAw7udbuHMGj1VG57+fYahHw2zOzwCi1dEfrqTzWdsaj9z1SaEFc21VGibnqX+YtXzaAwNk5ZpI2M0KnU4eDZ/kx+JrPNnwqXA4GM2Y+szruKX9y5QGzBFxalih 5 | umidGetStatusVal: 255 6 | screenPixel: 2560x1440 7 | navlanguage: zh-CN 8 | navUserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 9 | navPlatform: Win32 10 | appName: taobao 11 | appEntrance: taobao_pc 12 | _csrf_token: oOQuRfy5sCvX9Cms8JJjP2 13 | umidToken: da22bf745d62ba313ea9d3030e71851d38578ec5 14 | hsiz: 1d0b9d39224d73d5fdaf4da6a0217b3d 15 | bizParams: 16 | style: default 17 | appkey: 00000000 18 | from: tbTop 19 | isMobile: false 20 | lang: zh_CN 21 | returnUrl: https://www.taobao.com/ 22 | fromSite: 0 -------------------------------------------------------------------------------- /爱企查_已完成/a.jpg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /爱企查_已完成/check_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/爱企查_已完成/check_img.jpg -------------------------------------------------------------------------------- /爱企查_已完成/data.txt: -------------------------------------------------------------------------------- 1 | mod: login 2 | action: dopost 3 | url: https://www.iqiyecha.com/ 4 | userid: 1111111 5 | userpwd: 23333 6 | checkcode: v5yd 7 | memory: on 8 | log_submit: 立即登录 -------------------------------------------------------------------------------- /爱企查_已完成/headers.txt: -------------------------------------------------------------------------------- 1 | accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 2 | accept-encoding: gzip, deflate, br 3 | accept-language: zh-CN,zh;q=0.9 4 | cache-control: max-age=0 5 | content-length: 168 6 | content-type: application/x-www-form-urlencoded 7 | origin: https://www.iqiyecha.com 8 | referer: https://www.iqiyecha.com/mayi-member.php?mod=login&url=https%3A%2F%2Fwww.iqiyecha.com%2F&cityid=0 9 | sec-fetch-mode: navigate 10 | sec-fetch-site: same-origin 11 | sec-fetch-user: ?1 12 | upgrade-insecure-requests: 1 13 | user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 -------------------------------------------------------------------------------- /爱企查_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | Base_Url: https://www.tianyancha.com/brand/bc809591510 4 | Author: jing 5 | Modify: 2020/10/22 6 | """ 7 | 8 | 9 | import requests 10 | from pprint import pprint 11 | from requests import session 12 | import time 13 | 14 | 15 | class GetData(object): 16 | def __init__(self, user, pwd): 17 | self.login_url = "https://www.iqiyecha.com/mayi-member.php" 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = session() 21 | self.headers = self.load_data("headers.txt") 22 | 23 | def load_data(self, path): 24 | 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def login_(self): 34 | 35 | # 获取formdata 36 | data = self.load_data("data.txt") 37 | 38 | # 获取验证码图片 39 | def get_checkcode_img(): 40 | url = "https://www.iqiyecha.com/mayi-auth.php?" 41 | r_img = self.sess.get(url) 42 | with open("./check_img.jpg", "wb") as f: 43 | f.write(r_img.content) 44 | get_checkcode_img() 45 | 46 | data["userid"] = self.user 47 | data["userpwd"] = self.pwd 48 | data["checkcode"] = input("请打开-check_img文件-输入验证码") 49 | 50 | pprint(data) 51 | response = self.sess.post(self.login_url, data=data) 52 | with open("./a.jpg", "wb") as f: 53 | f.write(response.content) 54 | print(response.content.decode()) 55 | print(self.sess.cookies) 56 | r = self.sess.get("https://www.iqiyecha.com/javascript.php?part=mayilogin&callback=success_jsonpCallback&_=" + str(round(time.time() * 1000))) 57 | print(r.content.decode()) 58 | print("\u666f\u6c38\u5f3a") 59 | 60 | 61 | if __name__ == '__main__': 62 | user = "" 63 | pwd = "" 64 | get_data = GetData(user, pwd) # TODO: 输入 账号 密码 65 | get_data.login_() 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /爱应用_已完成/login.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | Base_Url: http://www.iapps.im/ 4 | Author: jing 5 | Modify: 2020/10/22 6 | """ 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "http://www.iappstoday.com/ajax/login" 21 | 22 | def load_data(self, path): 23 | data = {} 24 | with open(path, "rt", encoding="utf-8") as f: 25 | read = f.readlines() 26 | for line in read: 27 | split_ = line.split(":") 28 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 29 | return data 30 | 31 | def get_pwd(self): 32 | with open('./get_pwd.js', encoding='utf-8') as f: 33 | js_pwd = f.read() 34 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 35 | return pwd 36 | 37 | def login_(self): 38 | self.sess.get("http://www.iappstoday.com/") 39 | pwd = self.get_pwd() 40 | data = { 41 | "username": self.user, 42 | "password": pwd 43 | } 44 | r = requests.post(self.login_url, data=data) 45 | print(r.content.decode()) 46 | 47 | 48 | if __name__ == '__main__': 49 | user = "" 50 | pwd = "222222" 51 | 52 | login = Login(user, pwd) # TODO: 输入账号&密码 53 | login.login_() 54 | -------------------------------------------------------------------------------- /猫眼_js加密已完成_后续有滑动验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://maoyan.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import execjs 9 | import requests 10 | 11 | 12 | class Login(): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | 18 | def get_pwd(self): 19 | with open('./get_pwd.js', encoding='utf-8') as f: 20 | js_pwd = f.read() 21 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 22 | return pwd 23 | 24 | def login_(self): 25 | pwd = self.get_pwd() 26 | print(pwd) 27 | 28 | if __name__ == '__main__': 29 | user = "" 30 | pwd = "222222" 31 | login = Login(user, pwd) # TODO: 输入 账号 密码 32 | login.login_() -------------------------------------------------------------------------------- /珍爱网_密码加密已完成_后续有滑动验证码/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.zhenai.com/n/login?registerFrom=baseInfo 3 | Author:jing 4 | Modify:2020/10/26 5 | Notes:用的nodejs 加载的 window等 6 | """ 7 | 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def get_pwd(self): 22 | 23 | js_pwd = """ 24 | const jsdom = require("jsdom"); 25 | const { JSDOM } = jsdom; 26 | const dom = new JSDOM(`

Hello world

`); 27 | window = global; 28 | var document = dom.window.document; 29 | var params = { 30 | location:{ 31 | hash: "", 32 | host: "www.toutiao.com", 33 | hostname: "www.toutiao.com", 34 | href: "https://www.toutiao.com", 35 | origin: "https://www.toutiao.com", 36 | pathname: "/", 37 | port: "", 38 | protocol: "https:", 39 | search: "", 40 | }, 41 | navigator:{ 42 | appCodeName: "Mozilla", 43 | appName: "Netscape", 44 | appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 45 | cookieEnabled: true, 46 | deviceMemory: 8, 47 | doNotTrack: null, 48 | hardwareConcurrency: 4, 49 | language: "zh-CN", 50 | languages: ["zh-CN", "zh"], 51 | maxTouchPoints: 0, 52 | onLine: true, 53 | platform: "Win32", 54 | product: "Gecko", 55 | productSub: "20030107", 56 | userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 57 | vendor: "Google Inc.", 58 | vendorSub: "", 59 | }, 60 | "screen":{ 61 | availHeight: 1040, 62 | availLeft: 0, 63 | availTop: 0, 64 | availWidth: 1920, 65 | colorDepth: 24, 66 | height: 1080, 67 | pixelDepth: 24, 68 | width: 1920, 69 | } 70 | }; 71 | Object.assign(window,params); 72 | 73 | 74 | window.document = document; 75 | 76 | const {JSEncrypt} = require("E:/pycharmproject/study_own/js_study/珍爱网_密码加密已完成_后续有滑动验证码/JSEncrypt.js") 77 | 78 | 79 | function getpwd(pwd){ 80 | var n = 2048; 81 | var t = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCNjsTlE3AIR1YXyhE9M5SQ9xf1o0+W528nLdvI7ZmCOdFMed8SA3L91YFP+8wBl1we6BwVQBHo/4OQwUNlwVE7BgtsV5D67/rR74d0vGJNLBNMx6V3D/Uf+QgXBlPESWRwRkkHl2RbzTWbI60X0mLTxkvvpEYSvgFytlv5QL+on3TKp/Q4UiUk4MmWnY1taNLw7rAM8/HXYotC+jnhMgjvYEf5Ank/F0Tm4WZq/QlJcT2pOEN8vanGT325XhyshdqZJgG2IT1nt5EdtVjXySF9AMpnA2Cmz35Qygy/rx3+0+82yBpCgxjv0O7pYvtJ5tIXWkcUB3V6HtXiCkMNWRwIDAQAB"; 82 | var r = new JSEncrypt({default_key_size: n}); 83 | r.setPublicKey(t) 84 | return r.encrypt(pwd) 85 | } 86 | """ 87 | 88 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd) 89 | return pwd 90 | 91 | def login_(self): 92 | pwd = self.get_pwd() 93 | print(pwd) 94 | 95 | 96 | if __name__ == '__main__': 97 | user = "" 98 | pwd = "222222" 99 | 100 | login = Login(user, pwd) # TODO: 输入账号&密码 101 | login.login_() 102 | -------------------------------------------------------------------------------- /百家号_未完成/data.txt: -------------------------------------------------------------------------------- 1 | staticpage: https://baijiahao.baidu.com/content/static/third_party/passport/v3Jump.html 2 | charset: UTF-8 3 | token: b6d4a19558f7ada16d8136442c513394 4 | tpl: bjh 5 | subpro: 6 | apiver: v3 7 | tt: 1607579068905 8 | codestring: 9 | safeflg: 0 10 | u: https://baijiahao.baidu.com?source=inner 11 | isPhone: 12 | detect: 1 13 | gid: 311910E-AA76-410F-B6F7-25CCA234384F 14 | quick_user: 0 15 | logintype: basicLogin 16 | logLoginType: pc_loginBasic 17 | idc: 18 | loginmerge: true 19 | mkey: 20 | username: 岁月以缓释肥 21 | password: K5QBlMV3iglXoUo5rZ0nm5bk/FwVDgItgZ1lEWSllGApRjcoEZXu2dt3SU57UhNZXPyjWrbnUDBDT4s4xcCnOItQ+h98fXjL7xViIahVEleScc3zsdTidxC9cgBLpt0sLH4zt0Fk/DgAjll9AAytg07Ci2RUyQhNjLBVQz6Szho= 22 | mem_pass: on 23 | rsakey: R9jpAHg7q78bM8dJnMERz4jzovL6lf54 24 | crypttype: 12 25 | ppui_logintime: 75569 26 | countrycode: 27 | fp_uid: 28 | fp_info: 29 | loginversion: v4 30 | supportdv: 1 31 | ds: 4KMgah1Sccdes3Zhdh7lDZYaWURAZGLd2XL4hUFkRSSID9cWa3++J8eYtsR/9YYBK9pzs/OoWpf03WU7F6elni4n/eloXba1MITRCiWSx2euqz+ccvXGryfmolPN2D714L/YSj4800btoThDQRL+gugoNTweg54NpmLrsbqxI37gQhpbJ79XTmsueFxUbjND8McC58Lz5DS1NDPITFeFLlKAfo5VRwdisSFxSDIKr+oZ8rJvrYWBnGQeYnMqGZQIqbVhxCiioNB1iKQ5Z9bRKzKmxcDPqpJf2jWXpiTziI/LPS6hfwrPNu1mg94s6GwUGhbe3jSpumrekDb/YFSPn2doO4tO20txy207S86eSTf/r10kugV41XmQA/9Z52A2a5Y6HGo+T/lUNZmMNqpNlx/Vq06hBc4aZtOJzhdw3ihvQLT//UzOP7fuBud6/GqicY2RKsZDsqpoH1DY0UwW4bt6dhXJ7VLQvxqR4SEDLwZ5wjCyNulzsIL9P+9nSZ31FnE36x768/Dkgdmn42KbAFmLaOcdyE5hpLnsDVJDChHp8Vtv+H0OaxlSGnptrGyTxBOFlWwXhHz5vpP4XbUY4trsbZMxmfTInIYtBFrWAjXr0oHl0+w8jn5xPbIHDA7KO9fOQeDXaOKRAmDMNey4C33IAKB96d/UuE+AULcanU42iMaJtZ5euteXX+33w6ENJ53dHzFVsUo4AwmtdVCPA+y27cuIQQmO/JnViD++EvSQMTETvr5L1Zs1IeCd2OO7qtr4J0OxwHRAa/Wkt6OYoVYlnU90W3ecSqgbC7Ya6OxqOiPImrAwGjzPly0YotuIGO4id/v5xnmZQW36VUMCM5Xg/tROY/eQWPsY6aocLnHZKBYBphVk5NfapX8jxVLOOI4sEBmuAIyzjdpbHAiPHTKT6pFchwfjyiuAAUIE0lRV+Cub33IqB5qcLPK7OIZ8EBGpfibQlQEDO6FfTFOyTekei4RqmI8/dwNw3q79VDlR/OnP+VxZoKAWTe/lw0l+wAXPZTjhBSYvjIR/s+3iNd216WRbfK+8nb8Qb/m7CPM= 32 | tk: 4234naItv7ZARd38tXEbjJRsLECQEXNU3+D69VojNjol+UD4iYTjLPmTqD3stW2RaEemw8Ry5NRlwLrA9hadjHguPyxXZO5N7jxVtGhHS/qsKO4= 33 | dv: tk0.53442111728215711607578993789@vvV0RBtGo-AkqYsrpu4WnhGsyQJp8BI-4QI~s-NInuH2WOAktz8MNetMozAkqYsrpu4WnhGsyQJp8BI-4QI~s-NInuH2WOAkJxtkNetMozAkqYsrpu4WnhGsyQJp8BI-4QI~s-NInuH2WOAkHL8-setMozAkqYsrpu4WnhGsyQJp8BI-4QI~s-NInuH2WOAkHztG5etMozAkqYsrpu4WnhGsyQJp8BI-4QI~s-NInuH2WOAkR~tG5egV0Mg8-HxAkHZtbciukRiA6cWt-rY8G3bAkri8M3cAp4hG35CBJWQIWhGJpeiIWyWRLsbGTpUNIcWtMHY8MRbAkrxtGtzAp4hG35CBJWQIWhGJpeiIWyTv~nUQkRi8mcL8MqYtMqi8-JYR0p-RbWYvL5Fv1WUH2OfQkr-ukrY8kocAkob8-riA6c_BmmEzm-ZsviQh-VhtCcbAkRxGVr50YcAMJ-8kBbtGrZ8-oxtMrW8-rZ8Mq~8GRxuG3-8-SzhVLA6sfN0sTE2zONq__xVstmccAkoiuGJYtGo~uCcb8GHcAkri8kqYtMJLtmcb8GHcAkritkq_ 34 | fuid: FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49IZbsw3/U3NYEqD0LjhKzgMn8fIES5OyXlgwN5I+F8wHowpWWfXkQJw8/9AsO5Q2VOvnc2JlHGIlGS8Vq2z4OA8zaRvjEI9OarWTtjDf5wVusmzdeGjAxz4dmY4d1fuC0dE5PzBgXpCOJ6oP9F1B0OBXZ6NFgNn2lrgQwwquN8rqwFn/CpI7KeCSrRQsklbyv/hEWyl79MxvLbGtNE5a53Z/q8CkoTNf7Ti1glGYmN32UM9dg0uX+VzET/mmTRe4Dt+MuVHSzsI/bKCjPbpaOqfM8UsxDJUG9hyrGZ8QHa1kDeT+Ddv75N8yfV11EodG0md5M2RtLZ6XQnb6lvKhclvSXSMln+ZatWfuni+7USTJgZicwLx3tTw8w2MT/zIqkrNhOql/Q6ETXFlGqILfde5NpMyb45cXjD1dSB3iDJEft1pfuVcgAAXBP18U5zCRDX2z2pK9F7JDaBbznWo6XY3dMMGrweUracAvqOGvkcWCkbabfuAhICynUZ9dpyd84KIArwzZKNYlfcEkE/coI4l9E8V02o2uAuZkYGvr/xRKGfezxD2zg/ciUh9kJABfAzTeAd2C9z9UHlh+I3bt/mn2o3PFDIohCzg/DRTUtNxRgJ13AUairLDWhe5SwH+f9kx+4rjNadQYRXY62cs4wa6vu3FNhnx0vECH7/RD7jOBIII2bq4mC3fO/B8sQPyvOXB2yftWJq5RvTVVuNSVVv9L2sdsWMwjAXMqTEDLYJ8d1sBAiZVqRumDq+zV3cirOdalgjfdDmOpvo6TsQUOMAzmbXJ5CXk9nzzniu4/V0qIqCi18Kqy/9bMKm+Y/aKPJJGO/mKL64uD0V1BPPvqVoeGBZrZdicvQj/Ixpg4HV9e/xxJNDJS+Dlsbqu3n4I65ukNGXLyEklC4yELuWd/LWcH9vINW2iNXxXOmtVELY74TxxJNDJS+Dlsbqu3n4I65uiZNjgrTAOu3w4UVXnTxXuL0FM/uFy3y/bm3bXiDfzlcmV/10jRpRMa1Wc01DNVRdz6tbH1m8PotlhxmYCxCuj53Swh7Kr1HWCzhMzIFEQ3X4I7OpaIP8n+Lzocjt3hpX 35 | traceid: EF5F4401 36 | callback: parent.bd__pcbs__95q0cc 37 | time: 1607579069 38 | alg: v3 39 | sig: Z00ydnRjYTAvVUZUdG1rdEVBSnBUN09LbEp6c0pFRkFsRld4WVJNTkMybU5uS0lRVDQrQ2Z5dlZXVnczYUlXdw== 40 | elapsed: 14 41 | shaOne: 00513eb4bd320d20d4d6f6c9bc418dd2847128f2 -------------------------------------------------------------------------------- /百家号_未完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: 3 | Author: 4 | Modify: 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.sess.headers = { 20 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 21 | } 22 | self.login_url = "" 23 | 24 | def load_data(self, path): 25 | data = {} 26 | with open(path, "rt", encoding="utf-8") as f: 27 | read = f.readlines() 28 | for line in read: 29 | split_ = line.split(":") 30 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 31 | return data 32 | 33 | def get_pwd(self): 34 | with open('./get_pwd.js', encoding='utf-8') as f: 35 | js_pwd = f.read() 36 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 37 | return pwd 38 | 39 | def login_(self): 40 | # pwd = self.get_pwd() 41 | # print(pwd) 42 | 43 | data = self.load_data("data.txt") 44 | pprint(data) 45 | if __name__ == '__main__': 46 | # user = "" 47 | # pwd = "222222" 48 | # 49 | # login = Login(user, pwd) # TODO: 输入账号&密码 50 | # login.login_() 51 | print("\u7528\u6237\u540D\u6216\u5BC6\u7801\u4E0D\u6B63\u786E") -------------------------------------------------------------------------------- /空中网_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/空中网_已完成/captcha.jpg -------------------------------------------------------------------------------- /空中网_已完成/get_pwd.js: -------------------------------------------------------------------------------- 1 | 2 | function getpwd(str, pwd) { 3 | if (pwd == null || pwd.length <= 0) { 4 | return null 5 | } 6 | ;var prand = ""; 7 | for (var i = 0; i < pwd.length; i++) { 8 | prand += pwd.charCodeAt(i).toString() 9 | } 10 | ;var sPos = Math.floor(prand.length / 5); 11 | var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5)); 12 | var incr = Math.ceil(pwd.length / 2); 13 | var modu = Math.pow(2, 31) - 1; 14 | if (mult < 2) { 15 | return null 16 | } 17 | ;var salt = Math.round(Math.random() * 1000000000) % 100000000; 18 | prand += salt; 19 | while (prand.length > 10) { 20 | var a = prand.substring(0, 1); 21 | var b = prand.substring(10, prand.length); 22 | if (b.length > 10) { 23 | prand = b 24 | } else { 25 | prand = (parseInt(a) + parseInt(b)).toString() 26 | } 27 | } 28 | ;prand = (mult * prand + incr) % modu; 29 | var enc_chr = ""; 30 | var enc_str = ""; 31 | for (var i = 0; i < str.length; i++) { 32 | enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255)); 33 | if (enc_chr < 16) { 34 | enc_str += "0" + enc_chr.toString(16) 35 | } else 36 | enc_str += enc_chr.toString(16); 37 | prand = (mult * prand + incr) % modu 38 | } 39 | ;salt = salt.toString(16); 40 | while (salt.length < 8) 41 | salt = "0" + salt; 42 | enc_str += salt; 43 | return enc_str 44 | } 45 | 46 | -------------------------------------------------------------------------------- /空中网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: http://www.kongzhong.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import execjs 9 | from requests import session 10 | import time 11 | import re 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess = session() 21 | self.sess.headers = { 22 | "Referer": "https://passport.kongzhong.com/login", 23 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 24 | } 25 | 26 | def get_dc(self): 27 | url = "https://sso.kongzhong.com/ajaxLogin?j=j&jsonp=j&service=https://passport.kongzhong.com/&_=1602833536420".format(str(int(time.time()*1000))) 28 | response = self.sess.get(url) 29 | dc = re.findall("\"dc\":\"(.*?)\"", response.content.decode())[0] 30 | return dc 31 | 32 | def get_captcha(self): 33 | url = "https://sso.kongzhong.com/createVCode?w=80&h=30&0.4357485497800657" 34 | 35 | res = self.sess.get(url) 36 | 37 | with open("./captcha.jpg","wb") as f: 38 | f.write(res.content) 39 | 40 | 41 | def get_pwd(self): 42 | with open('./get_pwd.js', encoding='utf-8') as f: 43 | js_pwd = f.read() 44 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd, self.get_dc()) 45 | return pwd 46 | 47 | def login(self): 48 | self.get_captcha() 49 | self.sess.get("https://passport.kongzhong.com/login") 50 | pwd = self.get_pwd() 51 | 52 | login_url = "https://sso.kongzhong.com/ajaxLogin?j=j&&type=1&service=https://passport.kongzhong.com/&username={}&password={}&vcode={}&vcode=8zgu&toSave=0&_={}".format(self.user, pwd, input("请输入验证码"), str(int(time.time()*1000))) 53 | 54 | r = self.sess.get(login_url) 55 | print(r.content.decode()) 56 | 57 | 58 | if __name__ == '__main__': 59 | login = Login("", "") # TODO: 输入 账号 密码 60 | login.login() -------------------------------------------------------------------------------- /筑龙学社_已完成/data.txt: -------------------------------------------------------------------------------- 1 | cookieday: 10 2 | loginName: 18513606111 3 | passwd: DfuXUNBkF1VaL40EWI3L6TbJOyEAlvBgYQuhjRzOnVLYEmbky62uU8PllQyCSd5Wuj9XZcZthFlDvqGJZkHUKlu9SgJ892s38yQK2vYCFlwYU0xJFEADmtCq+6z1pgG+5Ip0V/U3bX6aAs3hA5daEtGeVVxGfAOordFPWaqAjCQ= 4 | dataformat: custom 5 | callback: parent.showlogin 6 | fromUrl: https://www.zhulong.com/ 7 | seccode: 8 | ignoreMobile: 0 -------------------------------------------------------------------------------- /筑龙学社_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.zhulong.com/ 3 | Author: jing 4 | Modify: 2020/11/10 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from requests import session 10 | 11 | 12 | class Login(object): 13 | def __init__(self, user,pwd): 14 | self.pwd = pwd 15 | self.user = user 16 | self.sess = session() 17 | self.login_url = "https://passport.zhulong.com/openapi/user/userLoginNewAuth" 18 | self.sess.headers = { 19 | "User-Agent": 20 | "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 21 | } 22 | 23 | def load_data(self, path): 24 | data = {} 25 | with open(path, "rt", encoding="utf-8") as f: 26 | read = f.readlines() 27 | for line in read: 28 | split_ = line.split(":") 29 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 30 | return data 31 | 32 | def get_pwd(self): 33 | with open('./get_pwd.js', encoding='utf-8') as f: 34 | js_pwd = f.read() 35 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 36 | return pwd 37 | 38 | def login(self): 39 | data = self.load_data("data.txt") 40 | data["loginName"] = self.user 41 | 42 | pwd = self.get_pwd() 43 | data["passwd"] = pwd 44 | 45 | self.sess.post(self.login_url, data=data) 46 | r = self.sess.get("https://message.zhulong.com/openjson/getMessageInfo?member_uid=0&callback=jQuery1830394389132959285_1602830186274&ajax=1&time=0.2517303862633977&_=1602830186493") 47 | print(r.content.decode("utf-8")) 48 | # 查看自己的账户名称是否存在 49 | 50 | 51 | if __name__ == '__main__': 52 | 53 | user = "" 54 | pwd = "" 55 | 56 | login = Login(user, pwd) # TODO: 输入 账号 密码 57 | login.login() 58 | 59 | -------------------------------------------------------------------------------- /粉笔网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: http://www.kongzhong.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | import re 10 | 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.sess = requests.session() 16 | self.pwd = pwd 17 | self.user = user 18 | self.login_url = "https://tiku.fenbi.com/api/users/loginV2?kav=12&app=web" 19 | 20 | def get_pwd(self): 21 | with open('./get_pwd.js', encoding='utf-8') as f: 22 | js_pwd = f.read() 23 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 24 | return pwd 25 | 26 | def login_(self): 27 | data = { 28 | "password": self.get_pwd(), 29 | "persistent": "true", 30 | "app": "web", 31 | "phone": self.user, 32 | } 33 | self.sess.post(self.login_url, data=data) 34 | response = self.sess.get("https://fenbi.com/page/home") 35 | find = re.findall("({})".format(self.user), response.content.decode(), re.S) 36 | if len(find) > 0: 37 | print("登录成功") 38 | 39 | 40 | if __name__ == '__main__': 41 | user = "" 42 | pwd = "" 43 | 44 | login = Login(user, pwd) # TODO: 输入 账号 密码 45 | login.login_() -------------------------------------------------------------------------------- /纵横小说网_密码加密破解_后续有极验/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://passport.zongheng.com/ 3 | Author:jing 4 | Modify:2020/10/23 5 | """ 6 | 7 | import execjs 8 | import requests 9 | 10 | 11 | class Login(object): 12 | 13 | def __init__(self, user, pwd): 14 | self.user = user 15 | self.pwd = pwd 16 | self.sess = requests.session() 17 | 18 | 19 | def get_pwd(self): 20 | with open('./get_pwd.js', encoding='utf-8') as f: 21 | js_pwd = f.read() 22 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 23 | return pwd 24 | 25 | def login_(self): 26 | pwd = self.get_pwd() 27 | print(pwd) 28 | 29 | 30 | if __name__ == '__main__': 31 | user = "" 32 | pwd = "222222" 33 | 34 | login = Login(user, pwd) # TODO: 输入账号&密码 35 | login.login_() 36 | -------------------------------------------------------------------------------- /网易_已完成/data.txt: -------------------------------------------------------------------------------- 1 | channel: 0 2 | d: 10 3 | domains: 163.com 4 | l: 0 5 | pd: 163 6 | pkid: MODXOXd 7 | pw: 8 | pwdKeyUp: 1 9 | rtid: 10 | t: 1605062680494 11 | tk: 12 | topURL: https://www.163.com/?referFrom=undefined 13 | un: -------------------------------------------------------------------------------- /网易_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.163.com/?referFrom=undefined 3 | Author: jing 4 | Modify: 2020/10/22 5 | Notes: 部分参数修改之后 通用于 网易号(http://mp.163.com/login.html?url=http%3A%2F%2Fmp.163.com%2F) 6 | """ 7 | 8 | 9 | import execjs 10 | import requests 11 | import time 12 | from pprint import pprint 13 | import json 14 | 15 | class Login(object): 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.rtid = "skrecxLjeVaKrndvnlSkXQty4wRjsLen" 24 | self.login_url = "https://dl.reg.163.com/dl/l" 25 | 26 | def load_data(self, path): 27 | data = {} 28 | with open(path, "rt", encoding="utf-8") as f: 29 | read = f.readlines() 30 | for line in read: 31 | split_ = line.split(":") 32 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 33 | return data 34 | 35 | def get_tk_data(self): 36 | self.sess.headers = { 37 | 38 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 39 | } 40 | 41 | gt_un_url = "https://dl.reg.163.com/dl/gt?" \ 42 | "un=" + self.user + \ 43 | "&pkid=MODXOXd&pd=163" \ 44 | "&channel=0" \ 45 | "&topURL=https%3A%2F%2Fwww.163.com%2F%3FreferFrom%3Dundefined" \ 46 | "&rtid=" + self.rtid + \ 47 | "&nocache=" + str(int(time.time()*1000)) 48 | 49 | response = self.sess.get(gt_un_url).json() 50 | return response["tk"] # 返回tk参数 51 | 52 | def load_data(self, path): 53 | data = {} 54 | with open(path, "rt", encoding="utf-8") as f: 55 | read = f.readlines() 56 | for line in read: 57 | split_ = line.split(":") 58 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 59 | return data 60 | 61 | def get_pwd(self): 62 | with open('./get_pwd.js', encoding='utf-8') as f: 63 | js_pwd = f.read() 64 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 65 | return pwd 66 | 67 | def login_(self): 68 | data = self.load_data("data.txt") 69 | data["un"] = self.user 70 | self.sess.get("https://nex.163.com/q?app=7BE0FC82&c=homepage&l=11&site=netease&affiliate=homepage&cat=homepage&type=column1200x125_960100&location=1&cb=jsonp_0088962116615948") 71 | self.sess.get("https://dl.reg.163.com/dl/ini?pd=163&pkid=MODXOXd&pkht=www.163.com&channel=0&topURL=https%3A%2F%2Fwww.163.com%2F%3FreferFrom%3Dundefined&rtid=CFSsnGlWwS6QwN5uj8e0EVXpFBVWENWx&nocache=1605062667352") 72 | 73 | tk = self.get_tk_data() # 获取tk 74 | data["tk"] = tk 75 | data["t"] = str(int(time.time()*1000)) 76 | data["rtid"] = self.rtid 77 | 78 | pwd = self.get_pwd() 79 | data["pw"] = pwd 80 | pprint(data) 81 | 82 | res = self.sess.post(self.login_url, json=data) 83 | print(res.content.decode()) 84 | 85 | 86 | if __name__ == '__main__': 87 | login = Login("", "") # TODO: 输入 账号 密码 88 | login.login_() -------------------------------------------------------------------------------- /美团_密码加密完成_h5Fingerprint参数未生成/data.txt: -------------------------------------------------------------------------------- 1 | countrycode: 86 2 | email: 18541655445 3 | password: K47EqoSgNfKwjiQM5yOItl8LOzUQgGqZ5kYaUtYgG70vKqwV61K13MVsWAWonOU+hUrRgwE4B/UFAU88BjMqU8UuyDmXKWEElzEBUcDhIC/H0W5BOCHo8YRU+tteNSdMFNwx1LGJohxAQbycXmGPGztOeUQjKgzCcBhXw4QXPbw= 4 | origin: account-login 5 | csrf: HSb8yVOP-xslw9OXlXlC_o-XpE1Pbu_Q3zd0 6 | requestCode: 7 | responseCode: 8 | h5Fingerprint: 9 | device_name: 10 | device_type: Chrome 11 | device_os: Window 12 | sdkType: pc -------------------------------------------------------------------------------- /美团_密码加密完成_h5Fingerprint参数未生成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://bj.meituan.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "" 21 | 22 | def load_data(self, path): 23 | data = {} 24 | with open(path, "rt", encoding="utf-8") as f: 25 | read = f.readlines() 26 | for line in read: 27 | split_ = line.split(":") 28 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 29 | return data 30 | 31 | def get_pwd(self): 32 | with open('./get_pwd.js', encoding='utf-8') as f: 33 | js_pwd = f.read() 34 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 35 | return pwd 36 | 37 | def get_h5(self): 38 | # chrome 中运行的js 可以得到正常的返回 execjs 中报错 待解决 39 | with open('./get_h5.js', encoding='utf-8') as f: 40 | js_h5 = f.read() 41 | h5 = execjs.compile(js_h5, cwd=r'E:\node\node_modules\npm\node_modules').call("h5") 42 | return h5 43 | 44 | def login_(self): 45 | # pwd = self.get_pwd() 46 | # print(pwd) 47 | h5 = self.get_h5() 48 | print(h5) 49 | 50 | 51 | if __name__ == '__main__': 52 | user = "" 53 | pwd = "222222" 54 | 55 | login = Login(user, pwd) # TODO: 输入账号&密码 56 | login.login_() 57 | -------------------------------------------------------------------------------- /老k游戏_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/老k游戏_已完成/captcha.jpg -------------------------------------------------------------------------------- /老k游戏_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: http://web.lkgame.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | 11 | 12 | class Login(): 13 | def __init__(self, user, pwd): 14 | self.user = user 15 | self.pwd = pwd 16 | self.sess = requests.session() 17 | self.login_url = "" 18 | 19 | def get_pwd(self): 20 | with open('./get_pwd.js', encoding='utf-8') as f: 21 | js_pwd = f.read() 22 | u_p = execjs.compile(js_pwd).call("getpwd", self.user,self.pwd) # 返回的是加密后的账号密码 23 | 24 | return u_p 25 | 26 | def get_captcha(self): 27 | js_captcha = """ 28 | function url(){ 29 | return 'http://login.lkgame.com/Sso/GetValidCode?'+ Math.random(); 30 | } 31 | """ 32 | url = execjs.compile(js_captcha).call("url") 33 | response = self.sess.get(url) 34 | with open("captcha.jpg", "wb") as f: 35 | f.write(response.content) 36 | 37 | def login_(self): 38 | user_pwd = self.get_pwd() 39 | 40 | self.get_captcha() 41 | data = { 42 | "lku": user_pwd[0], 43 | "lkp": user_pwd[1], 44 | "url": "http://web.lkgame.com/Sso/AjaxLogin?callback=parent.SsoIndex.AjaxSsoLoginCB", 45 | "vcode": input("请输入验证码:"), 46 | "encoding": "utf-8", 47 | } 48 | pprint(data) 49 | response = self.sess.post("http://login.lkgame.com/Sso/Login", data=data) 50 | print(response.content.decode()) 51 | 52 | 53 | if __name__ == '__main__': 54 | user = "11111" 55 | pwd = "22222" 56 | login = Login(user, pwd) 57 | login.login_() 58 | -------------------------------------------------------------------------------- /联通营业厅_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://uac.10010.com/portal/mallLogin.jsp?redirectURL=http://www.10010.com/net5/ 3 | Author:jing 4 | Modify:2020/11/11 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "" 20 | 21 | def load_data(self, path): 22 | data = {} 23 | with open(path, "rt", encoding="utf-8") as f: 24 | read = f.readlines() 25 | for line in read: 26 | split_ = line.split(":") 27 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 28 | return data 29 | 30 | def get_pwd(self): 31 | with open('./get_pwd.js', encoding='utf-8') as f: 32 | js_pwd = f.read() 33 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd) 34 | return pwd 35 | 36 | def login_(self): 37 | pwd = self.get_pwd() 38 | print(pwd) 39 | 40 | 41 | if __name__ == '__main__': 42 | user = "" 43 | pwd = "222222" 44 | 45 | login = Login(user, pwd) # TODO: 输入账号&密码 46 | login.login_() -------------------------------------------------------------------------------- /聚惠商城_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://www.minshengec.com/loginNew/index.jhtml 3 | Author:jing 4 | Modify:2020/11/11 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | 11 | 12 | class Login(object): 13 | 14 | def __init__(self, user, pwd): 15 | self.user = user 16 | self.pwd = pwd 17 | self.sess = requests.session() 18 | self.login_url = "" 19 | 20 | def get_pwd(self): 21 | with open('./get_pwd.js', encoding='utf-8') as f: 22 | js_pwd = f.read() 23 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 24 | return pwd 25 | 26 | def login_(self): 27 | pwd = self.get_pwd() 28 | print(pwd) 29 | 30 | 31 | if __name__ == '__main__': 32 | user = "" 33 | pwd = "22222" 34 | 35 | login = Login(user, pwd) # TODO: 输入账号&密码 36 | login.login_() -------------------------------------------------------------------------------- /芒果TV_已完成/data.txt: -------------------------------------------------------------------------------- 1 | _support: 10000000 2 | deviceid: 57a2c0be-78f5-4c67-bb56-d839274b0d6d 3 | appVersion: pcweb-6.3.0.gray 4 | dname: 5 | src: intelmgtv 6 | invoker: pcweb 7 | username: 8 | password: 9 | smscode: 86 10 | captcha: -------------------------------------------------------------------------------- /芒果TV_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.mgtv.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import requests 8 | from pprint import pprint 9 | 10 | 11 | 12 | def load_data(): 13 | data = {} 14 | with open("./data.txt", "rt", encoding="utf-8") as f: 15 | read = f.readlines() 16 | for line in read: 17 | split_ = line.split(":") 18 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 19 | return data 20 | 21 | 22 | data = load_data() 23 | pprint(data) 24 | 25 | data["username"] = "" 26 | data["password"] = "" # TODO: 输入 账号 密码 27 | 28 | post_url = "https://nuc.api.mgtv.com/v1/Login" 29 | r = requests.post(post_url, data=data) 30 | 31 | print(r.content.decode()) # 登录成功 32 | -------------------------------------------------------------------------------- /虎牙_只做了密码加密_其他的后续补充/get_pwd.js: -------------------------------------------------------------------------------- 1 | function getpwd(pwd) { 2 | return toHex(core(toArray(pwd))) 3 | } 4 | 5 | function toArray(e) { 6 | for (var t = (e.length + 8 >> 6) + 1, o = new Array(16 * t), a = 0; 16 * t > a; a++) 7 | o[a] = 0; 8 | for (a = 0; a < e.length; a++) 9 | o[a >> 2] |= e.charCodeAt(a) << 24 - 8 * (3 & a); 10 | return o[a >> 2] |= 128 << 24 - 8 * (3 & a), 11 | o[16 * t - 1] = 8 * e.length, 12 | o 13 | } 14 | function toHex(e) { 15 | for (var t = "0123456789abcdef", o = "", a = 0; a < 4 * e.length; a++) 16 | o += t.charAt(e[a >> 2] >> 8 * (3 - a % 4) + 4 & 15) + t.charAt(e[a >> 2] >> 8 * (3 - a % 4) & 15); 17 | return o 18 | } 19 | function core(e) { 20 | for (var t = e, o = new Array(80), a = 1732584193, n = -271733879, s = -1732584194, i = 271733878, r = -1009589776, c = 0; c < t.length; c += 16) { 21 | for (var d = a, l = n, u = s, p = i, h = r, m = 0; 80 > m; m++) { 22 | o[m] = 16 > m ? t[c + m] : rol(o[m - 3] ^ o[m - 8] ^ o[m - 14] ^ o[m - 16], 1); 23 | var g = add(add(rol(a, 5), ft(m, n, s, i)), add(add(r, o[m]), kt(m))); 24 | r = i, 25 | i = s, 26 | s = rol(n, 30), 27 | n = a, 28 | a = g 29 | } 30 | a = add(a, d), 31 | n = add(n, l), 32 | s = add(s, u), 33 | i = add(i, p), 34 | r = add(r, h) 35 | } 36 | return new Array(a,n,s,i,r) 37 | } 38 | 39 | 40 | function add(e, t) { 41 | var o = (65535 & e) + (65535 & t) 42 | , a = (e >> 16) + (t >> 16) + (o >> 16); 43 | return a << 16 | 65535 & o 44 | } 45 | function rol (e, t) { 46 | return e << t | e >>> 32 - t 47 | } 48 | function ft(e, t, o, a) { 49 | return 20 > e ? t & o | ~t & a : 40 > e ? t ^ o ^ a : 60 > e ? t & o | t & a | o & a : t ^ o ^ a 50 | } 51 | function kt(e) { 52 | return 20 > e ? 1518500249 : 40 > e ? 1859775393 : 60 > e ? -1894007588 : -899497514 53 | } 54 | -------------------------------------------------------------------------------- /虎牙_只做了密码加密_其他的后续补充/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.huya.com/?ptag=gouzai&rso=huya_h5_395 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.login_url = "" 24 | 25 | def load_data(self, path): 26 | data = {} 27 | with open(path, "rt", encoding="utf-8") as f: 28 | read = f.readlines() 29 | for line in read: 30 | split_ = line.split(":") 31 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 32 | return data 33 | 34 | def get_pwd(self): 35 | with open('./get_pwd.js', encoding='utf-8') as f: 36 | js_pwd = f.read() 37 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 38 | return pwd 39 | 40 | def login_(self): 41 | pwd = self.get_pwd() 42 | print(pwd) 43 | 44 | 45 | if __name__ == '__main__': 46 | user = "" 47 | pwd = "222222" 48 | 49 | login = Login(user, pwd) # TODO: 输入账号&密码 50 | login.login_() -------------------------------------------------------------------------------- /豆瓣_滑动验证码/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.douban.com/ 3 | Author:jing 4 | Modify: 5 | """ 6 | 7 | import time 8 | import execjs 9 | import requests 10 | from pprint import pprint 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.sess.headers = { 20 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 21 | "Referer": "https://accounts.douban.com/passport/login_popup?login_source=anony", 22 | "Host": "accounts.douban.com", 23 | } 24 | self.login_url = "https://accounts.douban.com/j/mobile/login/basic" 25 | 26 | def load_data(self, path): 27 | data = {} 28 | with open(path, "rt", encoding="utf-8") as f: 29 | read = f.readlines() 30 | for line in read: 31 | split_ = line.split(":") 32 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 33 | return data 34 | 35 | 36 | def login_(self): 37 | self.sess.get("https://www.douban.com/") 38 | data = { 39 | "ck":"", 40 | "remember": "true", 41 | "name": self.user, 42 | "password": self.pwd, 43 | } 44 | res = self.sess.post(self.login_url, data=data) 45 | print(res.content.decode()) 46 | # 需要图形验证码 目前图形验证码刷新不出 后续查漏时会补充 47 | 48 | 49 | if __name__ == '__main__': 50 | user = "" 51 | pwd = "222222" 52 | 53 | login = Login(user, pwd) # TODO: 输入账号&密码 54 | login.login_() -------------------------------------------------------------------------------- /途牛_已完成/captcha_img.png: -------------------------------------------------------------------------------- 1 | {"success":false,"errno":-9,"errmsg":"\u672a\u77e5\u9519\u8bef","data":null} -------------------------------------------------------------------------------- /途牛_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://passport.tuniu.com/login?origin=https://i.tuniu.com/ssoConnect 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from requests import session 10 | import re 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.sess = session() 17 | self.login_url = "https://passport.tuniu.com/login/post" 18 | self.user = user 19 | self.pwd = pwd 20 | self.sess.headers = { 21 | "accept": "image/webp,image/apng,image/*,*/*;q=0.8", 22 | "accept-encoding": "gzip, deflate, br", 23 | "accept-language": "zh-CN,zh;q=0.9", 24 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", 25 | # "referer": "https://passport.tuniu.com/login?origin=https://www.tuniu.com/ssoConnect" 26 | } 27 | 28 | # 获取验证码的地址 并进行请求 29 | def get_captcha_url(self): 30 | captcha_js = ''' 31 | function captcha(){ 32 | return new Date().getTime() +Math.random() 33 | } 34 | ''' 35 | captcha = execjs.compile(captcha_js).call("captcha") 36 | 37 | captcha_url = "https://passport.tuniu.com/ajax/captcha/v/" + str(captcha) 38 | r = self.sess.get(captcha_url) 39 | print(r.content) 40 | with open("./captcha_img.png", "wb") as f: 41 | f.write(r.content) 42 | 43 | def get_pwd(self): 44 | with open('./get_pwd.js', encoding='utf-8') as f: 45 | js_pwd = f.read() 46 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 47 | return pwd 48 | 49 | def login(self): 50 | self.sess.get("https://passport.tuniu.com/login?origin=https://i.tuniu.com/ssoConnect") # 获取cookies 51 | 52 | 53 | data = { 54 | "sWeak": "0", 55 | "login_type": "P-N", 56 | "intlCode": "", 57 | "username": self.user, 58 | "password": self.get_pwd(), 59 | } 60 | if self.get_status(data): 61 | print("登陆成功!!!") 62 | else: 63 | self.get_captcha_url() 64 | data["identify_code"] = input("请输入验证码:") 65 | if self.get_status(data): 66 | print("登陆成功!!!") 67 | else: 68 | print("请核对 账号密码!!!!!!!") 69 | 70 | def get_status(self, data): 71 | self.sess.post(self.login_url, data=data) 72 | yan = "https://i.tuniu.com/usercenter/usercommonajax/japi" 73 | res = self.sess.post(yan, data={"serviceName": "MOB.MEMBERS.InnerController.userInfo"}).json() 74 | if len(re.findall("({})".format(self.user), str(res))) > 0: 75 | return True 76 | else: 77 | return False 78 | 79 | 80 | if __name__ == '__main__': 81 | login = Login("", "") # TODO: 输入 账号 密码 82 | login.login() 83 | -------------------------------------------------------------------------------- /逗游网_已完成/get_pwd.js: -------------------------------------------------------------------------------- 1 | function getpwd(pwd, ts, nonce){ 2 | return Sha1.hash(nonce + ts + Sha1.hash(pwd)) 3 | } 4 | /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 5 | /* SHA-1 implementation in JavaScript | (c) Chris Veness 2002-2010 | www.movable-type.co.uk */ 6 | /* - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html */ 7 | /* http://csrc.nist.gov/groups/ST/toolkit/examples.html */ 8 | /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 9 | 10 | var Sha1 = {}; // Sha1 namespace 11 | 12 | /** 13 | * Generates SHA-1 hash of string 14 | * 15 | * @param {String} msg String to be hashed 16 | * @param {Boolean} [utf8encode=true] Encode msg as UTF-8 before generating hash 17 | * @returns {String} Hash of msg as hex character string 18 | */ 19 | Sha1.hash = function(msg, utf8encode) { 20 | utf8encode = (typeof utf8encode == 'undefined') ? true : utf8encode; 21 | 22 | // convert string to UTF-8, as SHA only deals with byte-streams 23 | if (utf8encode) msg = Utf8.encode(msg); 24 | 25 | // constants [§4.2.1] 26 | var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; 27 | 28 | // PREPROCESSING 29 | 30 | msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] 31 | 32 | // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1] 33 | var l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length 34 | var N = Math.ceil(l/16); // number of 16-integer-blocks required to hold 'l' ints 35 | var M = new Array(N); 36 | 37 | for (var i=0; i>> 32, but since JS converts 46 | // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators 47 | M[N-1][14] = ((msg.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14]) 48 | M[N-1][15] = ((msg.length-1)*8) & 0xffffffff; 49 | 50 | // set initial hash value [§5.3.1] 51 | var H0 = 0x67452301; 52 | var H1 = 0xefcdab89; 53 | var H2 = 0x98badcfe; 54 | var H3 = 0x10325476; 55 | var H4 = 0xc3d2e1f0; 56 | 57 | // HASH COMPUTATION [§6.1.2] 58 | 59 | var W = new Array(80); var a, b, c, d, e; 60 | for (var i=0; i>>(32-n)); 109 | } 110 | 111 | // 112 | // hexadecimal representation of a number 113 | // (note toString(16) is implementation-dependant, and 114 | // in IE returns signed numbers when used on full words) 115 | // 116 | Sha1.toHexStr = function(n) { 117 | var s="", v; 118 | for (var i=7; i>=0; i--) { v = (n>>>(i*4)) & 0xf; s += v.toString(16); } 119 | return s; 120 | } 121 | 122 | 123 | /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 124 | /* Utf8 class: encode / decode between multi-byte Unicode characters and UTF-8 multiple */ 125 | /* single-byte character encoding (c) Chris Veness 2002-2010 */ 126 | /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 127 | 128 | var Utf8 = {}; // Utf8 namespace 129 | 130 | /** 131 | * Encode multi-byte Unicode string into utf-8 multiple single-byte characters 132 | * (BMP / basic multilingual plane only) 133 | * 134 | * Chars in range U+0080 - U+07FF are encoded in 2 chars, U+0800 - U+FFFF in 3 chars 135 | * 136 | * @param {String} strUni Unicode string to be encoded as UTF-8 137 | * @returns {String} encoded string 138 | */ 139 | Utf8.encode = function(strUni) { 140 | // use regular expressions & String.replace callback function for better efficiency 141 | // than procedural approaches 142 | var strUtf = strUni.replace( 143 | /[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz 144 | function(c) { 145 | var cc = c.charCodeAt(0); 146 | return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); } 147 | ); 148 | strUtf = strUtf.replace( 149 | /[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz 150 | function(c) { 151 | var cc = c.charCodeAt(0); 152 | return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); } 153 | ); 154 | return strUtf; 155 | } 156 | 157 | /** 158 | * Decode utf-8 encoded string back into multi-byte Unicode characters 159 | * 160 | * @param {String} strUtf UTF-8 string to be decoded back to Unicode 161 | * @returns {String} decoded string 162 | */ 163 | Utf8.decode = function(strUtf) { 164 | // note: decode 3-byte chars first as decoded 2-byte strings could appear to be 3-byte char! 165 | var strUni = strUtf.replace( 166 | /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars 167 | function(c) { // (note parentheses for precence) 168 | var cc = ((c.charCodeAt(0)&0x0f)<<12) | ((c.charCodeAt(1)&0x3f)<<6) | ( c.charCodeAt(2)&0x3f); 169 | return String.fromCharCode(cc); } 170 | ); 171 | strUni = strUni.replace( 172 | /[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars 173 | function(c) { // (note parentheses for precence) 174 | var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f; 175 | return String.fromCharCode(cc); } 176 | ); 177 | return strUni; 178 | } 179 | -------------------------------------------------------------------------------- /逗游网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.doyo.cn/passport/login?next=/ 3 | Author:jing 4 | Modify:2020/11/11 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | import time 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.nonce = "" 20 | self.ts = "" 21 | self.login_url = "https://www.doyo.cn/User/Passport/login" 22 | 23 | def get_pwd(self): 24 | with open('./get_pwd.js', encoding='utf-8') as f: 25 | js_pwd = f.read() 26 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd, self.ts, self.nonce) 27 | return pwd 28 | 29 | def get_nonce(self): 30 | js = """ 31 | function get(){ 32 | return Math.random() 33 | } 34 | """ 35 | random_ = execjs.compile(js).call("get") 36 | url = "https://www.doyo.cn/User/Passport/token?username={}&random={}".format(self.user, random_) 37 | 38 | res = self.sess.get(url).json() 39 | self.nonce = res["nonce"] 40 | self.ts = res["ts"] 41 | 42 | def login_(self): 43 | self.sess.get("https://www.doyo.cn/passport/login?next=/") 44 | self.get_nonce() 45 | 46 | pwd = self.get_pwd() 47 | 48 | data = { 49 | "username": self.user, 50 | "password": pwd, 51 | "remberme": "1", 52 | "next": "JTJG", 53 | } 54 | 55 | res = self.sess.post(self.login_url, data=data) 56 | 57 | 58 | if __name__ == '__main__': 59 | user = "sdfsafsadf" 60 | pwd = "222222" 61 | login = Login(user, pwd) # TODO: 输入账号&密码 62 | login.login_() -------------------------------------------------------------------------------- /通用的js头.js: -------------------------------------------------------------------------------- 1 | const jsdom = require("jsdom"); 2 | const { JSDOM } = jsdom; 3 | const dom = new JSDOM(`

Hello world

`); 4 | window = global; 5 | var document = dom.window.document; 6 | var params = { 7 | location:{ 8 | hash: "", 9 | host: "www.toutiao.com", 10 | hostname: "www.toutiao.com", 11 | href: "https://www.toutiao.com", 12 | origin: "https://www.toutiao.com", 13 | pathname: "/", 14 | port: "", 15 | protocol: "https:", 16 | search: "", 17 | }, 18 | navigator:{ 19 | appCodeName: "Mozilla", 20 | appName: "Netscape", 21 | appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 22 | cookieEnabled: true, 23 | deviceMemory: 8, 24 | doNotTrack: null, 25 | hardwareConcurrency: 4, 26 | language: "zh-CN", 27 | languages: ["zh-CN", "zh"], 28 | maxTouchPoints: 0, 29 | onLine: true, 30 | platform: "Win32", 31 | product: "Gecko", 32 | productSub: "20030107", 33 | userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 34 | vendor: "Google Inc.", 35 | vendorSub: "", 36 | }, 37 | "screen":{ 38 | availHeight: 1040, 39 | availLeft: 0, 40 | availTop: 0, 41 | availWidth: 1920, 42 | colorDepth: 24, 43 | height: 1080, 44 | pixelDepth: 24, 45 | width: 1920, 46 | } 47 | }; 48 | Object.assign(window,params); 49 | 50 | window.document = document; 51 | -------------------------------------------------------------------------------- /金牛理财_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/金牛理财_已完成/captcha.jpg -------------------------------------------------------------------------------- /金牛理财_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://buyfund.jnlc.com/etrading/sys/web/loginUC 3 | Author:jing 4 | Modify:2020/10/28 5 | """ 6 | 7 | import re 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.login_url = "https://buyfund.jnlc.com/etrading/sys/web/loginUC" 21 | 22 | def get_pwd(self): 23 | 24 | js_pwd = """ 25 | const jsdom = require("jsdom"); 26 | const { JSDOM } = jsdom; 27 | const dom = new JSDOM(`

Hello world

`); 28 | window = global; 29 | var document = dom.window.document; 30 | var params = { 31 | location:{ 32 | hash: "", 33 | host: "www.toutiao.com", 34 | hostname: "www.toutiao.com", 35 | href: "https://www.toutiao.com", 36 | origin: "https://www.toutiao.com", 37 | pathname: "/", 38 | port: "", 39 | protocol: "https:", 40 | search: "", 41 | }, 42 | navigator:{ 43 | appCodeName: "Mozilla", 44 | appName: "Netscape", 45 | appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 46 | cookieEnabled: true, 47 | deviceMemory: 8, 48 | doNotTrack: null, 49 | hardwareConcurrency: 4, 50 | language: "zh-CN", 51 | languages: ["zh-CN", "zh"], 52 | maxTouchPoints: 0, 53 | onLine: true, 54 | platform: "Win32", 55 | product: "Gecko", 56 | productSub: "20030107", 57 | userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", 58 | vendor: "Google Inc.", 59 | vendorSub: "", 60 | }, 61 | "screen":{ 62 | availHeight: 1040, 63 | availLeft: 0, 64 | availTop: 0, 65 | availWidth: 1920, 66 | colorDepth: 24, 67 | height: 1080, 68 | pixelDepth: 24, 69 | width: 1920, 70 | } 71 | }; 72 | Object.assign(window,params); 73 | 74 | 75 | window.document = document; 76 | 77 | const {JSEncrypt} = require("E:/pycharmproject/study_own/js_study/金牛理财_已完成/get_pwd.js") 78 | 79 | 80 | 81 | function getpwd(pwd){ 82 | var encrypt = new JSEncrypt(); 83 | encrypt.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDL0SzLOMIzLX5Jhu++JQfQv9sjZOgvY4cDIaxbR9yAXncYC9ljDr8SFdZUhU3dAtcK1P5Z2KO2i65ZgMzV341e/VxvL/NZlx6Mva6Tpf58A2oEA+96HRAhENG744yJA323ZYRz5IRU+qETJr7KfbzR9zO6c7Oq0seoH9ChgyEAVwIDAQAB") 84 | return encrypt.encrypt(pwd) 85 | 86 | 87 | } 88 | 89 | 90 | """ 91 | 92 | pwd = execjs.compile(js_pwd, cwd=r'E:\node\node_modules\npm\node_modules').call("getpwd", self.pwd) 93 | return pwd 94 | 95 | def get_CSRFToken(self): 96 | url = "https://buyfund.jnlc.com/etrading/sys/web/loginUC" 97 | response = self.sess.get(url) 98 | CSRFToken = re.findall("name=\"CSRFToken\" value=\"(.*?)\" /", response.content.decode())[0] 99 | return CSRFToken 100 | 101 | def get_captcha(self): 102 | url = "https://buyfund.jnlc.com/etrading/sys/web/validateCode?id=3.1596543065850624" 103 | response = self.sess.get(url) 104 | 105 | with open("captcha.jpg", "wb") as f: 106 | f.write(response.content) 107 | 108 | def login_(self): 109 | CSRFToken = self.get_CSRFToken() 110 | self.get_captcha() 111 | pwd = self.get_pwd() 112 | 113 | data = { 114 | "CSRFToken": CSRFToken, 115 | "password": pwd, 116 | "userName": self.user, 117 | "seccode": input("请输入验证码:") 118 | 119 | } 120 | res = self.sess.post(self.login_url, data=data) 121 | login_status = re.findall("loginReuslt\((.*?),", res.content.decode())[0] 122 | if login_status == "true": 123 | print("登陆成功") 124 | 125 | 126 | if __name__ == '__main__': 127 | user = "" 128 | pwd = "" 129 | 130 | login = Login(user, pwd) # TODO: 输入账号&密码 131 | login.login_() -------------------------------------------------------------------------------- /问卷星_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:https://www.wjx.cn/Login.aspx?returnUrl=%2fnewwjx%2fmanage%2fmyquestionnaires.aspx 3 | Author:jing 4 | Modify:2020/12/3 5 | """ 6 | 7 | """ 8 | 有时候登陆失败之后需要一直登陆,因为本次登陆是一个项目的一部分所以本人的循环条件放在了项目的其他地方, 9 | 在使用时尽量添加失败失败后重复调用 run 方法, 一直到登陆成功 10 | """ 11 | from requests import session 12 | import requests 13 | from pprint import pprint 14 | from lxml import etree 15 | from bs4 import BeautifulSoup 16 | 17 | 18 | class GetData(object): 19 | 20 | def __init__(self, user, pwd, activity): 21 | self.user = user 22 | self.pwd = pwd 23 | self.activity = activity # 问卷的编号 24 | self.sess = session() 25 | # 设置请求头 26 | self.sess.headers = { 27 | "Host": "www.wjx.cn", 28 | "Connection": "keep-alive", 29 | "Upgrade-Insecure-Requests": "1", 30 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36", 31 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 32 | "Sec-Fetch-Site": "same-origin", 33 | "Sec-Fetch-Mode": "navigate", 34 | "Sec-Fetch-User": "?1", 35 | "Sec-Fetch-Dest": "document", 36 | "Referer": "https://www.wjx.cn/wjx/activitystat/viewstatsummary.aspx?activity=96886015&", 37 | "Accept-Encoding": "gzip, deflate, br", 38 | "Accept-Language": "zh-CN,zh;q=0.9", 39 | } 40 | 41 | # 获取问卷的地址 42 | def get_url(self): 43 | url = "https://www.wjx.cn/newwjx/manage/myquestionnaires.aspx" 44 | res = self.sess.get(url) 45 | html = etree.HTML(res.content.decode()) 46 | try: 47 | # 设置是否已经在登陆状态的检测条件, 自己添加语句 48 | href = html.xpath("")[0] 49 | return True 50 | except: 51 | return False 52 | 53 | # 登录 54 | def login(self): 55 | 56 | res = self.sess.get("https://www.wjx.cn/login.aspx") 57 | if "liVerifyCode" in res.text: 58 | # 如果存在则证明 需要滑动验证 59 | return False 60 | else: # 不需要滑动验证 61 | soup = BeautifulSoup(res.content, "html.parser", from_encoding="utf-8") 62 | viewstate = soup.select("#__VIEWSTATE")[0]["value"] 63 | viewstategenerator = soup.select("#__VIEWSTATEGENERATOR")[0]["value"] 64 | eventvalidation = soup.select("#__EVENTVALIDATION")[0]["value"] 65 | 66 | data = { 67 | "__VIEWSTATE": viewstate, 68 | "__VIEWSTATEGENERATOR": viewstategenerator, 69 | "__EVENTVALIDATION": eventvalidation, 70 | "UserName": "", 71 | "hfUserName": "", 72 | "Password": "", 73 | "LoginButton": "登 录", 74 | } 75 | 76 | ress = self.sess.post("https://www.wjx.cn/login.aspx", data=data) 77 | return True 78 | 79 | # 程序入口 80 | def run(self): # TODO: 测试登陆是否可用 81 | 82 | # 1、首先验证是否在登录状态 83 | login_status = self.get_url() 84 | if login_status: 85 | self.get_data() 86 | return True # 成功获取数据 87 | else: 88 | print("正在重新登陆") 89 | # 重新登陆 90 | if self.login(): 91 | self.get_data() 92 | return True # 成功获取数据 93 | else: 94 | print("登陆失败, 需要滑动验证码") 95 | return False # 需要滑动验证码 96 | 97 | def get_data(self): 98 | print("正在保存数据") 99 | file_name = "data/data.xlsx" # 数据的保存路径 100 | res = self.sess.get( 101 | "https://www.wjx.cn/wjx/activitystat/viewstatsummary.aspx?activity={}&reportid=-1&dw=1&dt=2".format( 102 | self.activity)) 103 | res = requests.get(res.url) 104 | with open(file_name, "wb") as f: 105 | f.write(res.content) 106 | 107 | 108 | if __name__ == '__main__': 109 | user = "" 110 | pwd = "" 111 | activity = "" 112 | get_data = GetData(user, pwd, activity) # 输入账号 密码 以及 问卷的id 113 | get_data.run() 114 | -------------------------------------------------------------------------------- /阿里云_完成密码加密/data.txt: -------------------------------------------------------------------------------- 1 | loginId: 哥替你出头 2 | password2: 9acc25785b9db3c84117145aad767c4d1519852736bd805d3d347239ee12363cf1e3ba3e7d692d775fc7a2bb1ba7a9cc4fce34a318129a75d86f175d30dea8528ebb745b7a05182102a23222f776e41b6d17259589c77f499fe0a37fa90d348e67dbf650aa8551b2e9b281a6cbf1e21fa5ba8741c08ee44fe438ec67ea946355 3 | keepLogin: false 4 | ua: 137#zp99hE9oUEPI8m5uZcOMiNcGIn9bM39VATyJRGpKIO2Y0H8nAkqnKhND5oV6egCYpUmwAKEmkBd1MBeayRh2QCAbro8HwrmEz8pri3sv3sHuNrE1uZj3xJ0j17fgimAUlOzm9IiiwgcvhuhJGfFfwfJ08Tz4qvBTVwPaq5NVayWEEw09ZeUOZKPP9RGz01Aq0rbWBvLqOCXJsz2fcgamd6UYwTEr9L78EYaFlObBX3ytQIwbOEyeQbW6eWWhos+pYSg0JyzVMOUYhnewWKklMTCLoiktPWVrXSmowNeHg8c3MJkQ1sLxFY+jVVVMOWYaWXtioULt82lr0YVeWRa6PrRRJsXsFKiJgEp2D4fSZhh9zZK+y3AimR/dqFIbo7eQncOqn0ZzOGzZwGkM9S6fzMSmSVVzgeoTeBIOM1uSd10Mm7KZ6FWzs3Va5hHoAW52WnzDlIYER3owYTUx1lg5pityQeLqUElpnuOccJvI+XIoYTJxfFdaiRlmQenJ+ZDVpRUclAey+kKMxwQb1lgkppicQonJ+GT9pdlT2IFkkSAR27xB2OLfzEGjejs+ktH2q0Jc1Iei+cqpYSJS1qQiVppcQenJ+ZXVpkUm1AEy+piOUrfTdl99iIS2UktoZZMGfdjdGCeT18SRuW4mu9Gk5AdRhv5x2gseuge/g2CYgZHjJY9it6DSv5FnXR/0Kmw9eJ2TEqTjFuOrV9G1TKb+7Z80oXBSnwW441uG+lrNefihob38zup10+XYxsAf6Gp6Qy1IImoXzOG39f7gsn6luZWcGVGEPu6IzhKk4PHQFz24kjNMouSkNlMXeIus7W/h7hjqZ0FdQ59CM1CH/0C/eaJYyARhA7u6cCzGwI/YZAfOQ1Y0gk+VRabEjMTwJjNlqch6y0HKxqVFF3bYc/qRZVYVaWtXYsLiAdLM3hDhLCvFjuid+f9BkhM2qpJRclIT+bMM6QKo+h3N/ataBiseh+JADMh8GZ+9MT1G7jcJQ4n+i7H9btLsqCOsEZ1/Y7m2yFVLAlj1fb5y+/8ZjT66wqjd/kgGn5/Ww3iV0nkZ+6bRAA0x8No0c/mzs+0J2lSKa+VZHRE1ywIKNvZ0Cz+5pDAIQ6dKpDpYMGkteojo3FLHvRI5nuilt/TlbcomyyLwb97DwCFdHnfITHra15gatLebQ93Sz+CHjRV943oIkJ+ueOIQKBLdvcc/r82CJIR3KRXv8rcBnoFbrdjfGhZyXrPf7FcADUaE2AUZDGvjEDbiw8w2RNIqTUFtT29Sn1hZpGWePvPu1u0RpBm738zstjAxfCGBIDKCmBUZadWMk/4ibajCLNodTXUICI6bed/At3Fipo/l99CEd9l5h7dOz4w+/nSRuP/DZBLa9c79J8zUCyu1gDpgimJ15d2XnE3e7bA+ZZmgSlF8zobeLbNwwcX0u5plK2l2mIp+QFOmsnSyoKwIUzAyL24Kbd1IlusBrVYYeWuAdAM8uLahIWlCbo/132i4na0UmXa1Mk/+p3/N1mjCTfso9Z/udOEJFcw879Gixd3BDBEadP/hk/xKOErdcbvNTx7N2u79eBgYcwL94zZDkdWV6hYLfNNWjdvUDO1sdrxafiTGzWYLZC0jJ2cf/kazJxYHRwxzwTWpxcLyrVnIIfbaOXy3Coe263qGCovGsZtDWLr6woSmbtiLf+g/0v0Iz74gbEEX/vZ+on/Iif9/+E+Nl96sDOppJzM75oVWYDH9q08Ix4c= 5 | umidGetStatusVal: 255 6 | screenPixel: 2560x1440 7 | navlanguage: zh-CN 8 | navUserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 9 | navPlatform: Win32 10 | appName: aliyun 11 | appEntrance: aliyun 12 | _csrf_token: AbU65a4Bdh7b4ZPL2Gp0V4 13 | umidToken: 27b80f1b771bd04afbd7d5632f3128c8c4712127 14 | isMobile: false 15 | lang: zh_CN 16 | returnUrl: https://account.aliyun.com/login/login_aliyun.htm?oauth_callback=https%3A%2F%2Fwww.aliyun.com%2F 17 | hsiz: 1ab8a2a2e0ccecadf05a785a795d2745 18 | fromSite: 6 19 | bizParams: -------------------------------------------------------------------------------- /风行网_已完成/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url:http://www.fun.tv/ 3 | Author:jing 4 | Modify:2020/10/27 5 | """ 6 | 7 | import execjs 8 | import requests 9 | from pprint import pprint 10 | import time 11 | 12 | 13 | class Login(object): 14 | 15 | def __init__(self, user, pwd): 16 | self.user = user 17 | self.pwd = pwd 18 | self.sess = requests.session() 19 | self.login_url = "http://api1.fun.tv/account/login_funshion?isajax=1&dtime=" 20 | 21 | def get_pwd(self): 22 | 23 | js_pwd = """ 24 | function str2binb(r) { 25 | for (var a = Array(), e = (1 << chrsz) - 1, n = 0; n < r.length * chrsz; n += chrsz) 26 | a[n >> 5] |= (r.charCodeAt(n / chrsz) & e) << 32 - chrsz - n % 32; 27 | return a 28 | } 29 | function core_sha1(r, a) { 30 | r[a >> 5] |= 128 << 24 - a % 32, 31 | r[(a + 64 >> 9 << 4) + 15] = a; 32 | for (var e = Array(80), n = 1732584193, s = -271733879, h = -1732584194, f = 271733878, c = -1009589776, d = 0; d < r.length; d += 16) { 33 | for (var o = n, _ = s, u = h, i = f, b = c, l = 0; 80 > l; l++) { 34 | e[l] = 16 > l ? r[d + l] : rol(e[l - 3] ^ e[l - 8] ^ e[l - 14] ^ e[l - 16], 1); 35 | var t = safe_add(safe_add(rol(n, 5), sha1_ft(l, s, h, f)), safe_add(safe_add(c, e[l]), sha1_kt(l))); 36 | c = f, 37 | f = h, 38 | h = rol(s, 30), 39 | s = n, 40 | n = t 41 | } 42 | n = safe_add(n, o), 43 | s = safe_add(s, _), 44 | h = safe_add(h, u), 45 | f = safe_add(f, i), 46 | c = safe_add(c, b) 47 | } 48 | return Array(n, s, h, f, c) 49 | } 50 | function safe_add(r, a) { 51 | var e = (65535 & r) + (65535 & a) 52 | , n = (r >> 16) + (a >> 16) + (e >> 16); 53 | return n << 16 | 65535 & e 54 | } 55 | 56 | 57 | function rol(r, a) { 58 | return r << a | r >>> 32 - a 59 | } 60 | 61 | function sha1_ft(t, r, a, e) { 62 | return 20 > t ? r & a | ~r & e : 40 > t ? r ^ a ^ e : 60 > t ? r & a | r & e | a & e : r ^ a ^ e 63 | } 64 | 65 | function sha1_kt(t) { 66 | return 20 > t ? 1518500249 : 40 > t ? 1859775393 : 60 > t ? -1894007588 : -899497514 67 | } 68 | 69 | function binb2hex(r) { 70 | for (var a = hexcase ? "0123456789ABCDEF" : "0123456789abcdef", e = "", n = 0; n < 4 * r.length; n++) 71 | e += a.charAt(r[n >> 2] >> 8 * (3 - n % 4) + 4 & 15) + a.charAt(r[n >> 2] >> 8 * (3 - n % 4) & 15); 72 | return e 73 | } 74 | var chrsz = 8; 75 | var hexcase = 0; 76 | function hex_sha1(r) { 77 | return binb2hex(core_sha1(str2binb(r), r.length * chrsz)) 78 | } 79 | 80 | 81 | function getpwd(pwd){ 82 | return hex_sha1(pwd).substr(0, 15) 83 | 84 | } 85 | 86 | 87 | """ 88 | 89 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 90 | return pwd 91 | 92 | def login_(self): 93 | print(self.login_url+str(int(time.time()*1000))) 94 | pwd = self.get_pwd() 95 | 96 | data = { 97 | "username": self.user, 98 | "password": pwd, 99 | "location": "{location}", 100 | "autologin": "on", 101 | } 102 | res = self.sess.post(self.login_url+str(int(time.time()*1000)), data=data).json() 103 | 104 | print(res) # {'status': 200, 'msg': '登录成功', 'url': '{location}', 'field': ''} 105 | 106 | 107 | 108 | 109 | if __name__ == '__main__': 110 | user = "" 111 | pwd = "" 112 | 113 | login = Login(user, pwd) # TODO: 输入账号&密码 114 | login.login_() 115 | -------------------------------------------------------------------------------- /飞卢小说网_已完成/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onepureman/spider_draft/c9cdd3a4486eca0d98e9417264359abc949ff294/飞卢小说网_已完成/captcha.jpg -------------------------------------------------------------------------------- /魅族_密码加密_后续有点击验证/get_pwd.js: -------------------------------------------------------------------------------- 1 | 2 | var cryPP = {}; 3 | 4 | cryPP.excutePP = function(r, e) { 5 | for (var n = "", t = 0; t < r.length; t++) { 6 | var o = e ^ r.charCodeAt(t); 7 | n += String.fromCharCode(o) 8 | } 9 | return encodeURIComponent(n) 10 | } 11 | , 12 | cryPP.generateMix = function(r) { 13 | return Math.ceil(1e3 * Math.random()) 14 | } 15 | 16 | 17 | 18 | function getpwd(pwd){ 19 | var kk = cryPP.generateMix(); 20 | return cryPP.excutePP(pwd, kk); 21 | } 22 | -------------------------------------------------------------------------------- /魅族_密码加密_后续有点击验证/login.py: -------------------------------------------------------------------------------- 1 | """ 2 | Base_Url: https://www.meizu.com/ 3 | Author: jing 4 | Modify: 2020/10/22 5 | """ 6 | 7 | 8 | import time 9 | import execjs 10 | import requests 11 | from pprint import pprint 12 | 13 | 14 | class Login(object): 15 | 16 | def __init__(self, user, pwd): 17 | self.user = user 18 | self.pwd = pwd 19 | self.sess = requests.session() 20 | self.sess.headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 22 | } 23 | self.login_url = "" 24 | 25 | def load_data(self, path): 26 | data = {} 27 | with open(path, "rt", encoding="utf-8") as f: 28 | read = f.readlines() 29 | for line in read: 30 | split_ = line.split(":") 31 | data[split_[0]] = ":".join(split_[1:]).replace("\n", "").replace(" ", "") 32 | return data 33 | 34 | def get_pwd(self): 35 | with open('./get_pwd.js', encoding='utf-8') as f: 36 | js_pwd = f.read() 37 | pwd = execjs.compile(js_pwd).call("getpwd", self.pwd) 38 | return pwd 39 | 40 | def login_(self): 41 | pwd = self.get_pwd() 42 | print(pwd) 43 | 44 | 45 | if __name__ == '__main__': 46 | user = "" 47 | pwd = "222222" 48 | 49 | login = Login(user, pwd) # TODO: 输入账号&密码 50 | login.login_() 51 | 52 | 53 | --------------------------------------------------------------------------------