Python Selenium 抓包注入记录


模拟登录淘宝

https://segmentfault.com/q/1010000022661044/a-1020000022674394

试了一下是可以正常登录的,没有要求滑块等任何验证。
环境:火狐Developer 66.0b14 (64 位),电信ip

部分注入脚本:

JavaScript 全选
function callInPageContent(func) {
    // run in html script
    // 此实现为FF特性, 仅在FF可用
    // 其他浏览器可以插入script来实现
    window.eval("(" + func.toSource() + ")();");
}

(() => {
    // run in content script
    callInPageContent(() => {
        Object.defineProperty(window.navigator, 'webdriver', {
            get: () => undefined
        });
        Object.defineProperty(window.navigator, 'platform', {
            get: () => 'Win64'
        });
        Object.defineProperty(window.navigator, 'hardwareConcurrency', {
            get: () => 4
        });
        Object.defineProperty(window.navigator, 'oscpu', {
            get: () => 'Win64'
        });


        const rawGetContext = window.HTMLCanvasElement.prototype.getContext;
        Object.defineProperty(window.HTMLCanvasElement.prototype, 'getContext', {
            get: () => function (s) {
                if (s === 'experimental-webgl') {
                    return {
                        VENDOR: 7936,
                        RENDERER: 7937,
                        getExtension: function () {
                            return null;
                        },
                        getParameter: function (s) {
                            if (s === 7936 || s === 7937) {
                                return 'Mozilla';
                            }
                            return null;
                        },
                        getSupportedExtensions: function () {
                            return [
                                "ANGLE_instanced_arrays",
                                "EXT_blend_minmax",
                                "EXT_color_buffer_half_float",
                                "EXT_texture_compression_rgtc",
                                "EXT_frag_depth",
                                "EXT_sRGB",
                                "EXT_shader_texture_lod",
                                "EXT_texture_filter_anisotropic",
                                "OES_element_index_uint",
                                "OES_standard_derivatives",
                                "OES_texture_float",
                                "OES_texture_float_linear",
                                "OES_texture_half_float",
                                "OES_texture_half_float_linear",
                                "OES_vertex_array_object",
                                // "WEBGL_color_buffer_float",
                                // "WEBGL_compressed_texture_s3tc",
                                // "WEBGL_compressed_texture_s3tc_srgb",
                                // "WEBGL_debug_renderer_info",
                                // "WEBGL_debug_shaders",
                                // "WEBGL_depth_texture",
                                // "WEBGL_draw_buffers",
                                // "WEBGL_lose_context",
                            ];
                        }
                    };
                }
                return rawGetContext.call(this, s);
            }
        });
        const overwrite = function (name) {
            const OLD = window.HTMLCanvasElement.prototype[name];
            Object.defineProperty(window.HTMLCanvasElement.prototype, name, {
                "value": function () {
                    const shift = {
                        'r': Math.floor(Math.random() * 10) - 5,
                        'g': Math.floor(Math.random() * 10) - 5,
                        'b': Math.floor(Math.random() * 10) - 5,
                        'a': Math.floor(Math.random() * 10) - 5
                    };
                    const width = this.width, height = this.height, context = this.getContext("2d");
                    const imageData = context.getImageData(0, 0, width, height);
                    for (let i = 0; i < height; i++) {
                        for (let j = 0; j < width; j++) {
                            const n = ((i * (width * 4)) + (j * 4));
                            imageData.data[n] = imageData.data[n] + shift.r;
                            imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
                            imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
                            imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
                        }
                    }
                    context.putImageData(imageData, 0, 0);
                    return OLD.apply(this, arguments);
                }
            });
        };
        overwrite('toBlob');
        overwrite('toDataURL');


        // noinspection JSUnresolvedVariable
        const originalQuery = window.navigator.permissions.query;
        // noinspection JSUnresolvedVariable
        window.navigator.permissions.query = (parameters) => (
            parameters.name === 'notifications' ?
                Promise.resolve({state: Notification.permission}) :
                originalQuery(parameters)
        );


        const getParameter = window.WebGLRenderingContext.prototype.getParameter;
        window.WebGLRenderingContext.prototype.getParameter = function (parameter) {
            // UNMASKED_VENDOR_WEBGL
            if (parameter === 37445) {
                return 'Intel Open Source Technology Center';
            }
            // UNMASKED_RENDERER_WEBGL
            if (parameter === 37446) {
                return 'Mesa DRI Intel(R) Ivybridge Mobile ';
            }

            return getParameter(parameter);
        };
    });

    // noinspection JSUnresolvedVariable
    window.document.addEventListener('mousemove', evt => window.wrappedJSObject._adb_plugin_mm_evt = evt);
})();
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:带有爬虫检测的网站汇总
下一篇:Python Selenium 前端如何检测Chrome-Headless不被爬虫虐
评论列表

发表评论

评论内容
昵称:
关联文章

Python Selenium 注入记录
Python使用selenium+chrome进行
python ChromeDriver下载地址
Python使用selenium+chrome配置指南
Python Selenium ChromeDriver 规避检测
Python Selenium Firefox 代理设置
Python资源安装列表
Python Selenium 爬虫如何隐藏Headles-Chrome不被检测出来 避免检测
C# 利用Autofac批量接口注入依赖【学习记录
selenium爬虫被检测到 该如何破
C#爬虫:使用Selenium,Selenium配置指南
Python Selenium使用火狐浏览器驱动
Python 重构Print 日志记录
.Net Core依赖注入
Python使用html解析Requests-html运行py文件没问题,Pyinstaller打包exe后运行报错
Python Windows服务
使用 mitmproxy + python 做拦截代理
Python Selenium 前端如何检测Chrome-Headless不被爬虫虐
Nuget增加输出目录targets配置
关于PaddleSharp GPU使用 常见问题记录

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码