SYMBOL INDEX (368 symbols across 73 files) FILE: 第三章:Web Js逆向/3.10 常见协议分析/3.10.2 protobuf协议/3.10.2.2 抖音protobuf解析案例/js.py function on_message (line 5) | def on_message(data): FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast.js method 'StringLiteral|NumericLiteral' (line 12) | 'StringLiteral|NumericLiteral'(path) { method 'UnaryExpression' (line 18) | 'UnaryExpression'(path) { method MemberExpression (line 36) | MemberExpression(path) { method VariableDeclarator (line 47) | VariableDeclarator(path) { method CallExpression (line 61) | CallExpression(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/while-if转变为while-switch.js method "WhileStatement" (line 36) | "WhileStatement"(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/三目运算符.js method ConditionalExpression (line 17) | ConditionalExpression(path){ FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/函数调用处自动替换计算值.js method FunctionDeclaration (line 20) | FunctionDeclaration(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/删除多余的空行和空语句.js method EmptyStatement (line 18) | EmptyStatement(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/删除未被使用的变量.js method VariableDeclarator (line 18) | VariableDeclarator(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/删除未被调用的函数.js method FunctionDeclaration (line 25) | FunctionDeclaration(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/去控制流(for-switch).js method ForStatement (line 49) | ForStatement(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/去控制流(while-switch).js method WhileStatement (line 44) | WhileStatement(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/合并定义在object对象外面的key、value.js method VariableDeclarator (line 22) | VariableDeclarator(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/处理eval函数.js method CallExpression (line 14) | CallExpression(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/处理条件已知的if语句.js method BinaryExpression (line 27) | BinaryExpression(path) { method IfStatement (line 40) | IfStatement(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/处理条件已知的三元表达式.js method ConditionalExpression (line 14) | ConditionalExpression(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/处理没有实参的自执行函数.js method UnaryExpression (line 16) | UnaryExpression(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/对同一节点使用多个方法.js function reduce_call_express (line 23) | function reduce_call_express(path) { function delete_empty_params (line 26) | function delete_empty_params(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/条件表达式拆分为if语句.js method ConditionalExpression (line 19) | ConditionalExpression(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/构造节点.js method VariableDeclarator (line 19) | VariableDeclarator(path){ FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/节点类型转换.js method "VariableDeclarator" (line 17) | "VariableDeclarator"(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/还原Array对象.js method VariableDeclarator (line 26) | VariableDeclarator(path){ FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/还原object对象.js method VariableDeclarator (line 30) | VariableDeclarator(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/还原定义的字面量.js method "Identifier" (line 19) | "Identifier"(path) method VariableDeclarator (line 26) | VariableDeclarator(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/还原成中文字符.js method StringLiteral (line 17) | StringLiteral(path) FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/还原自执行函数的实参.js method CallExpression (line 18) | CallExpression(path){ FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/ast补充/逗号表达式.js method exit (line 27) | exit(path){ FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/for_swith.js method ForStatement (line 3) | ForStatement(path) { FILE: 第三章:Web Js逆向/3.13 反混淆AST/3.13.4 用AST还原代码/lx.js function test (line 1) | function test() { FILE: 第三章:Web Js逆向/3.4 常见的压缩和混淆/3.4.1 webpack导出/webpack-export.js function o (line 4) | function o(n){ FILE: 第三章:Web Js逆向/3.4 常见的压缩和混淆/3.4.1 webpack导出/案例一.js function i (line 16) | function i(t) { function r (line 91) | function r(t) { function r (line 278) | function r(t) { function i (line 285) | function i(t) { function o (line 292) | function o(t) { function e (line 325) | function e(e) { function c (line 404) | function c(t) { function n (line 407) | function n(t, e) { function u (line 410) | function u(t, e) { function r (line 413) | function r(t, e) { function i (line 416) | function i(t, e) { function o (line 419) | function o(t) { function s (line 434) | function s(t) { function l (line 441) | function l(t) { function h (line 452) | function h(t) { function t (line 570) | function t(t) { function T (line 613) | function T(t, e) { function n (line 618) | function n(t, e) { function l (line 766) | function l(t, e, n, r, i) { function t (line 993) | function t(t) { function b (line 1016) | function b(t, e, n) { function t (line 1863) | function t() {} function t (line 1882) | function t(t) { function t (line 1909) | function t(t) { function t (line 1960) | function t(t) { function P (line 2005) | function P() { function j (line 2008) | function j(t, e) { function V (line 2065) | function V(t, e) { function q (line 2069) | function q(t) { function U (line 2074) | function U(t) { function t (line 2091) | function t() { function Q (line 2144) | function Q() { function t (line 2158) | function t() {} function t (line 2167) | function t() { function r (line 3078) | function r(t) { function n (line 3084) | function n() { function t (line 3229) | function t(t) { function t (line 3322) | function t(t) { function o (line 3327) | function o(t, e) { function s (line 3330) | function s(t, e) { function a (line 3335) | function a(t, e) { function e (line 3347) | function e(t, e) { function s (line 3804) | function s(t) { function c (line 3809) | function c(s) { function n (line 4112) | function n(t) { function a (line 4130) | function a(t) { function s (line 4159) | function s(t) { function a (line 4162) | function a(t) { function c (line 4165) | function c(t) { function u (line 4168) | function u(t, e) { function t (line 4222) | function t(t, e) { function t (line 4231) | function t(t, e) { function c (line 4271) | function c(t) { function a (line 4320) | function a(t) { function i (line 4353) | function i() { function u (line 4384) | function u(t) { function o (line 4419) | function o() { function s (line 4422) | function s() { function a (line 4425) | function a(e) { function f (line 4454) | function f() { function d (line 4459) | function d() { function p (line 4490) | function p(t, e) { function g (line 4494) | function g() {} function i (line 4567) | function i(t, e) { function i (line 4627) | function i(t) { function r (line 4687) | function r(t) { function get_passwrod (line 4701) | function get_passwrod(phone){ FILE: 第三章:Web Js逆向/3.4 常见的压缩和混淆/3.4.1 webpack导出/案例三.js function a (line 122) | function a(i, n) { function r (line 173) | function r() { function o (line 211) | function o(n, r, e) { function r (line 245) | function r(t) { function m (line 369) | function m(t, i, n) { function w (line 375) | function w(t, i, n) { function g (line 381) | function g(t, i) { function j (line 384) | function j(t, i) { function r (line 391) | function r(t) { function u (line 477) | function u(t, i, n, r) { function d (line 523) | function d(t, i, n, r) { function l (line 677) | function l(t, i, n, r) { function s (line 692) | function s(t, i, n, r, e) { function u (line 767) | function u(t, i, n, r, e, s, u) { function e (line 915) | function e() { function s (line 946) | function s(t, i, n, r, e, s) { function e (line 986) | function e(t) { function r (line 1035) | function r(t, i, n, r, e, s, u, o, h) { function f (line 1080) | function f(t, i) { function c (line 1087) | function c(t, i) { function a (line 1092) | function a(t) { function e (line 1267) | function e(t, i) { function u (line 1368) | function u(t, i, n, r) { function o (line 1378) | function o(t) { function o (line 1449) | function o(t, i) { function h (line 1452) | function h(t) { function f (line 1457) | function f() { function l (line 1477) | function l() { function v (line 1515) | function v(t, i) { function d (line 1518) | function d() { function s (line 1673) | function s(t) { function h (line 1696) | function h(t) { function p (line 1701) | function p() {} function h (line 1717) | function h(t, i) { function f (line 1726) | function f(t) { function c (line 1735) | function c(t, i) { function a (line 1754) | function a(n, r) { function c (line 1801) | function c(t, i) { function r (line 1865) | function r(t, i, n) { function u (line 1928) | function u(t, i) { function e (line 1933) | function e(t) { function w (line 2021) | function w(t, i) { function r (line 2033) | function r(t) { function r (line 2278) | function r(t, i) { function e (line 2408) | function e(t, i) { function e (line 2502) | function e(t, i, n) { function s (line 2507) | function s(t) { function f (line 2685) | function f(t, i) { function c (line 2688) | function c(t, i, n, r) { function h (line 2772) | function h(t, i, n) { function f (line 2778) | function f() {} function c (line 2779) | function c(t) { function a (line 2785) | function a() { function l (line 2791) | function l() { function v (line 2802) | function v(t, i, n) { function d (line 2805) | function d(t, i) { function b (line 2810) | function b(t, i, n) { function p (line 2820) | function p(t, i, n) { function s (line 2959) | function s() { function u (line 2962) | function u(t, i, n) { function PolicyInfoByTypeIdParam_encode (line 3022) | function PolicyInfoByTypeIdParam_encode(m){ FILE: 第三章:Web Js逆向/3.4 常见的压缩和混淆/3.4.1 webpack导出/案例二.js function reqId (line 1) | function reqId() { function c (line 48) | function c(t, e) { FILE: 第三章:Web Js逆向/3.4 常见的压缩和混淆/3.4.7 lsb隐写/lsb.py function plus (line 3) | def plus(str): function get_key (line 7) | def get_key(strr): function mod (line 14) | def mod(x, y): function func (line 17) | def func(old_img, str2, new_img): FILE: 第三章:Web Js逆向/3.5 常见的编码和加密/3.5.6 AES/aes_encrypt.py function add_to_16 (line 6) | def add_to_16(value): function encrypt (line 12) | def encrypt(key, text): function decrypt (line 19) | def decrypt(key, text): FILE: 第三章:Web Js逆向/3.5 常见的编码和加密/3.5.7 RSA/rsa_encrypt.py class RsaUtil (line 5) | class RsaUtil(object): method __init__ (line 10) | def __init__(self, method get_max_length (line 19) | def get_max_length(self, rsa_key, encrypt=True): method encrypt_by_public_key (line 31) | def encrypt_by_public_key(self, message): method decrypt_by_private_key (line 46) | def decrypt_by_private_key(self, message): method sign_by_private_key (line 62) | def sign_by_private_key(self, data): method verify_by_public_key (line 71) | def verify_by_public_key(self, message, signature): FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.2 newrank榜单逆向案例/js3.6.2.py class XbRank (line 4) | class XbRank(): method __init__ (line 5) | def __init__(self): method getxyz (line 22) | def getxyz(self,path): method getMedia (line 179) | def getMedia(self,page=1): method getRank1 (line 195) | def getRank1(self): method getRank2 (line 216) | def getRank2(self): method getRank3 (line 230) | def getRank3(self): method getRank4 (line 239) | def getRank4(self): method getRank5 (line 249) | def getRank5(self): FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.4 RSA参数加密逆向案例/js3.6.4.py function encrypt_str (line 5) | def encrypt_str(data): FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.5 AES数据加密逆向案例/run.py function decrypt (line 5) | def decrypt(info: str) -> list: FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.6 AES链接加密逆向案例/js3.6.6/test.js function lx (line 3) | function lx(hh) { FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.7 cnvd加速乐分析案例/run.py function start (line 18) | def start(): function then (line 26) | def then(): function end (line 36) | def end(page=1): function get_cookie_2 (line 42) | def get_cookie_2(data,hash): FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.7 cnvd加速乐分析案例/t_md5.js function hash (line 5) | function hash(_0x1502a6) { function go (line 222) | function go(_0x3dcb2b) { FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.7 cnvd加速乐分析案例/t_sha1.js function hash (line 5) | function hash(_0x3cb311) { function go (line 108) | function go(_0x3643f0) { FILE: 第三章:Web Js逆向/3.6 加密参数还原与模拟/3.6.7 cnvd加速乐分析案例/t_sha256.js function hash (line 6) | function hash(_0xb3a2f3) { function go (line 159) | function go(_0x50cd53) { FILE: 第三章:Web Js逆向/3.7 浏览器环境补充/3.7.0 浏览器环境补充/t1.js function get_signature (line 36) | function get_signature(url) { FILE: 第三章:Web Js逆向/3.7 浏览器环境补充/3.7.0 浏览器环境补充/t2.js function get_signature (line 48) | function get_signature(url) { FILE: 第三章:Web Js逆向/3.7 浏览器环境补充/3.7.0 浏览器环境补充/t3.js function ee (line 154) | function ee() { function Vn (line 157) | function Vn(e, t) { function a (line 179) | function a() { function a (line 195) | function a() { function Wn (line 207) | function Wn(e, t) { function Vn (line 213) | function Vn(e, t) { function Yn (line 261) | function Yn(e) { function ew (line 284) | function ew() { function a (line 291) | function a() { function mu_ (line 461) | function mu_() { FILE: 第三章:Web Js逆向/3.7 浏览器环境补充/3.7.0 浏览器环境补充/t4.js function get_all (line 4) | function get_all(){ function make_all (line 159) | function make_all(){ function Cilame (line 357) | function Cilame(){ FILE: 第三章:Web Js逆向/3.7 浏览器环境补充/3.7.3 selenium环境模拟/test.py function driver_sig (line 24) | def driver_sig(html_file): FILE: 第三章:Web Js逆向/3.9 加密方法远程调用/3.9.1 微博登陆参数RPC/server.py function check_permit (line 5) | async def check_permit(websocket): function recv_msg (line 16) | async def recv_msg(websocket): function main_logic (line 21) | async def main_logic(websocket, path): FILE: 第三章:Web Js逆向/3.9 加密方法远程调用/3.9.2 抖音直播数据RPC/server.py function check_permit (line 4) | async def check_permit(websocket): function recv_msg (line 9) | async def recv_msg(websocket): function main_logic (line 14) | async def main_logic(websocket, path): FILE: 第三章:Web Js逆向/3.9 加密方法远程调用/3.9.3 巨量指数签名RPC/juliang_index20231108.py class Browser (line 5) | class Browser(): method __init__ (line 6) | def __init__(self, **kwargs, ): method signature (line 57) | def signature(self, keyword, start_date, end_date): method decrypt (line 103) | def decrypt(self,data): method responseText (line 146) | def responseText(self, keyword, start_date, end_date): method close (line 176) | def close(self): function get_data (line 181) | def get_data(keyword, start_date, end_date): FILE: 第三章:Web Js逆向/3.9 加密方法远程调用/3.9.3 巨量指数签名RPC/juliang_index_0.py class Browser (line 31) | class Browser(): method __init__ (line 32) | def __init__(self, **kwargs, ): method signature (line 76) | def signature(self, keyword, start_date, end_date): method close (line 89) | def close(self): function get_data (line 94) | def get_data(keyword, start_date, end_date): function decrtptlx (line 107) | def decrtptlx(String): FILE: 第三章:Web Js逆向/3.9 加密方法远程调用/3.9.3 巨量指数签名RPC/juliang_index_1.py class Browser (line 29) | class Browser(): method __init__ (line 30) | def __init__(self, **kwargs, ): method signature (line 74) | def signature(self, keyword, start_date, end_date): method close (line 120) | def close(self): function get_data (line 125) | def get_data(keyword, start_date, end_date): function decrtptlx (line 135) | def decrtptlx(String): FILE: 第九章:安卓逆向案例/9.1 某新闻加密参数分析和还原/frida1.py function on_message (line 2) | def on_message(message, data): FILE: 第九章:安卓逆向案例/9.2 某瓣签名Frida还原/frida1.py function on_message (line 3) | def on_message(message, data): FILE: 第九章:安卓逆向案例/9.2 某瓣签名Frida还原/run.py function bd_request (line 7) | def bd_request(): function get_sig (line 24) | def get_sig(url,ts): FILE: 第九章:安卓逆向案例/9.4 某图参数Frida+Flask RPC/run.py function on_message (line 6) | def on_message(message, data): function start_hook (line 10) | def start_hook(): function search (line 38) | def search(): FILE: 第九章:安卓逆向案例/9.6 某资讯加固脱壳和参数分析/hook.py function on_message (line 2) | def on_message(message, data): FILE: 第九章:安卓逆向案例/9.6 某资讯加固脱壳和参数分析/rpc.py function on_message (line 4) | def on_message(message, data): function start_hook (line 8) | def start_hook(): FILE: 第六章:安卓逆向/Frida/Frida自吐算法.js function showStacks (line 7) | function showStacks() { function stringToBase64 (line 33) | function stringToBase64(e) { function base64ToString (line 57) | function base64ToString(e) { function hexToBase64 (line 90) | function hexToBase64(str) { function base64ToHex (line 93) | function base64ToHex(str) { function hexToBytes (line 102) | function hexToBytes(str) { function bytesToHex (line 118) | function bytesToHex(arr) { function stringToHex (line 134) | function stringToHex(str) { function stringToBytes (line 144) | function stringToBytes(str) { function bytesToString (line 159) | function bytesToString(arr) { function bytesToBase64 (line 167) | function bytesToBase64(e) { function base64ToBytes (line 191) | function base64ToBytes(e) { FILE: 第六章:安卓逆向/Frida/Frida自吐算法.py function on_message (line 8) | def on_message(message, data): function get_js (line 18) | def get_js(): function mians (line 647) | def mians(pakname): FILE: 第六章:安卓逆向/Unidbg/xgorgon.java class xgorgon (line 13) | public class xgorgon extends AbstractJni { method createLibraryResolver (line 15) | private static LibraryResolver createLibraryResolver() { method createARMEmulator (line 19) | private static AndroidEmulator createARMEmulator() { method xgorgon (line 28) | private xgorgon() { method destroy (line 40) | private void destroy() throws IOException { method main (line 43) | public static void main(String[] args) throws Exception { method xuzi1 (line 49) | public static String xuzi1(byte[] bArr) { method test (line 63) | private void test() { FILE: 第六章:安卓逆向/抖音/xposedhook.java class AwemeSrv (line 39) | public class AwemeSrv extends NanoHTTPD { method AwemeSrv (line 44) | public AwemeSrv() { method init (line 48) | public void init(XC_LoadPackage.LoadPackageParam lpparam) { method xuzi (line 57) | public static byte[] xuzi(String str) { method xuzi1 (line 66) | public static String xuzi1(byte[] bArr) { method get_leviathan (line 81) | public byte[] get_leviathan(int i,int time, byte[] s){ method parseStrToMd5L32 (line 86) | public static String parseStrToMd5L32(byte[] str){ method get_ttencrypt (line 106) | public byte[] get_ttencrypt(XC_LoadPackage.LoadPackageParam lpp2, byte... method get_formdata (line 110) | public byte[] get_formdata(byte[] data) throws Exception{ method get_stub (line 119) | public String get_stub(byte[] barr) throws Exception{ method get_fed (line 125) | public String get_fed(String fed) throws Exception{ method get_device (line 129) | public String get_device(String url, String formdata) throws Exception { method getUrl (line 154) | private static String getUrl(String url, String stub, long time1, Stri... method serve (line 196) | public NanoHTTPD.Response serve(NanoHTTPD.IHTTPSession session) { FILE: 第十一章:反爬虫补充/11.2 tls指纹识别/aiohttp_ja3.py class DESAdapter (line 5) | class DESAdapter(): method __init__ (line 6) | def __init__(self): method __call__ (line 9) | def __call__(self): function main (line 19) | async def main(): FILE: 第十一章:反爬虫补充/11.2 tls指纹识别/requests_jar3.py class DESAdapter (line 5) | class DESAdapter(HTTPAdapter): method __init__ (line 6) | def __init__(self, *args, **kwargs): method get_ciphers (line 10) | def get_ciphers(self): method init_poolmanager (line 19) | def init_poolmanager(self, *args, **kwargs): FILE: 第十一章:反爬虫补充/11.2 tls指纹识别/scrapy_Ja3_download.py class SSLFactory (line 21) | class SSLFactory: method __init__ (line 22) | def __init__(self): method __call__ (line 25) | def __call__(self) -> ssl.SSLContext: class Ja3DownloadHandler (line 38) | class Ja3DownloadHandler(HTTPDownloadHandler): method __init__ (line 39) | def __init__(self, settings: Settings, crawler: Optional[Crawler] = No... method _engine_started (line 46) | async def _engine_started(self, signal, sender): method download_request (line 50) | def download_request(self, request: Request, spider: Spider) -> Deferred: method _download_request (line 55) | async def _download_request(self, request: Request, spider: Spider) ->... method close (line 77) | async def close(self): FILE: 第十一章:反爬虫补充/11.3 http2/scrapy_http2_download.py class HttpxDownloadHandler (line 17) | class HttpxDownloadHandler(HTTPDownloadHandler): method __init__ (line 18) | def __init__(self, settings: Settings, crawler: Optional[Crawler] = No... method _engine_started (line 24) | async def _engine_started(self, signal, sender): method download_request (line 28) | def download_request(self, request: Request, spider: Spider) -> Deferred: method _download_request (line 33) | async def _download_request(self, request: Request, spider: Spider) ->... method close (line 53) | async def close(self): FILE: 第十章:验证码识别技术/10.2.1.1 邮箱滑块验证码.py class SlideCrack (line 10) | class SlideCrack(object): method __init__ (line 11) | def __init__(self, gap, bg, out=None): method clear_white (line 23) | def clear_white(img): method template_match (line 47) | def template_match(self, tpl, target): method image_edge_detection (line 66) | def image_edge_detection(img): method discern (line 70) | def discern(self): function get_distance (line 83) | def get_distance(gap, bg): function main (line 97) | def main(): FILE: 第十章:验证码识别技术/10.2.1.2 邮箱滑块验证码.py class SlideCrack (line 16) | class SlideCrack(object): method __init__ (line 17) | def __init__(self, gap, bg, out=None): method clear_white (line 29) | def clear_white(img): method template_match (line 53) | def template_match(self, tpl, target): method image_edge_detection (line 72) | def image_edge_detection(img): method discern (line 76) | def discern(self): function get_distance (line 89) | def get_distance(gap, bg): function main (line 104) | def main(): FILE: 第十章:验证码识别技术/10.2.2 数美滑块验证码.py function pad (line 22) | def pad(b): function split_args (line 32) | def split_args(s): function find_arg_names (line 51) | def find_arg_names(script): function get_encrypt_content (line 84) | def get_encrypt_content(message, key, flag): function get_random_ge (line 96) | def get_random_ge(distance): function make_mouse_action_args (line 139) | def make_mouse_action_args(distance): function get_distance (line 158) | def get_distance(fg, bg): function update_protocol (line 169) | def update_protocol(protocol_num, js_uri): function conf_captcha (line 182) | def conf_captcha(organization): function register_captcha (line 204) | def register_captcha(organization): function verify_captcha (line 228) | def verify_captcha(organization, rid, key, distance): function get_verify (line 260) | def get_verify(organization): function test (line 295) | def test(): FILE: 第四章:自动化工具的应用/4.2.4 Pyppeteer拦截器/test.py function main (line 4) | async def main(): function intercept_request (line 16) | async def intercept_request(Request): function intercept_response (line 31) | async def intercept_response(Response): FILE: 第四章:自动化工具的应用/4.3.5 cefpython3爬虫实战/cefpython_demo.py class ClientHandler (line 10) | class ClientHandler(object): method __init__ (line 12) | def __init__(self, chromeObject): method GetViewRect (line 15) | def GetViewRect(self, rect_out, **kwargs): method OnConsoleMessage (line 21) | def OnConsoleMessage(self, browser, message, **kwargs): method OnLoadError (line 25) | def OnLoadError(self, browser, frame, error_code, failed_url, **_): method OnLoadingStateChange (line 31) | def OnLoadingStateChange(self, browser, is_loading, **kwargs): class Client (line 44) | class Client(object): method __init__ (line 45) | def __init__(self, width=1920, height=1080, headless=False): method __getattr__ (line 65) | def __getattr__(self, name): method getBrowser (line 69) | def getBrowser(self): method LoadUrl (line 87) | def LoadUrl(self, url, synchronous=False): method getSource (line 97) | def getSource(self, synchronous=False): method Visit (line 110) | def Visit(self, value): function BrowserThread (line 117) | def BrowserThread(browser): FILE: 第四章:自动化工具的应用/4.7.3 autojs指数查询案例/main.js function goToHomePage (line 5) | function goToHomePage(){ function goToSearchPage (line 24) | function goToSearchPage(){ function getSearchResult (line 36) | function getSearchResult(saveArray){ function swapSearchResult (line 101) | function swapSearchResult(){ function searchForKey (line 105) | function searchForKey(tkey){ function goToZhiShuPage (line 143) | function goToZhiShuPage(){ function getZhiShuForKey (line 159) | function getZhiShuForKey(tkey){ FILE: 第四章:自动化工具的应用/4.7.3 autojs指数查询案例/test.js function goToHomePage (line 4) | function goToHomePage(){ function goToZhiShuPage (line 19) | function goToZhiShuPage(){ function getZhiShuForKey (line 35) | function getZhiShuForKey(tkey){