Giter Club home page Giter Club logo

webviewlib's Introduction

WebViewLib

广告业务SDK,揭秘广告刷量黑科技。

模块分为:

  • 一个JS库(支持自动点击,输入,滑动),采用js注入技术,webview模拟用户真实操作。
  • 一个WebViewManager封装库,采用1px的透明技术,不依赖于Activity进行加载。
  • 一个WebView封装库,里面封装,一些常见的国产ROM上的问题处理,常见的操作包含打开京东页面,应用宝支付,微信支付等等。

PS: JS库和WebViewManager库已经在老东家的暗地刷量项目(九点广告,百度糯米推广项目)实战检验过

欢迎参与讨论常见的webview刷量页面广告的黑科技,微信号:H675134792。

先来一波思路分析:

1. 探究如何模拟用户点击webview:

image

可知,通过各种转换方式,可以实现模拟用户点击行为。

2. 处理Webview中页面元素的不情况image

可能处于屏幕中,也有可能处理屏幕外,上端或者下端,因此需要针对性处理,处于屏幕中才能,精确点击到元素。

3.处理WebView悬浮窗,脱离Activity,1px显示

image 可能存在多个广告项目,因此采用并行方式,多个webview同步加载不同任务。

使用指南


AndroidJsLib的使用

1. 初始化

在webview调用loadUrl()之前,调用该方法:

  JavaScript.JavaScriptBuilder.init(webView, true);

该方法用于,添加javaScript交互接口,和log日志配置。

2.2 添加输入事件

例如:百度网页输入框,输入新根

通过浏览器获取到元素的css选择器:

image

        String elementName = "\"input.se-input\"";
        InputEvent inputEvent = InputEvent.create()
                .setElementName(elementName)
                .setDelayTime(1000)
                .setValue("新根")
                .setListener(new Response.InputListener() {
                    @Override
                    public void inputFailure(InputEvent inputEvent) {
                        String content = "输入失败";
                        Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();
                        Log.i(TAG, "  input 输入失败 ");
                    }

                    @Override
                    public void inputSuccess(InputEvent inputEvent) {
                        Toast.makeText(getApplicationContext(), "输入成功", Toast.LENGTH_SHORT).show();
                        Log.i(TAG, " input 输入成功");
                    }
                });
        JavaScript.JavaScriptBuilder.executeEvent(inputEvent, webView);

2.2 添加点击事件

通过浏览器获取到元素的css选择器:

image

点击百度一下的按钮,进行搜索操作。

 ClickEvent clickEvent = ClickEvent.create()
                .setDelayTime(5000)
                .setElementName("\"button.se-bn\"")
                .setListener(new Response.ClickListener() {
                    @Override
                    public void clickFailure(ClickEvent clickEvent) {
                        Toast.makeText(getApplicationContext(), "点击失败", Toast.LENGTH_SHORT).show();
                        Log.i(TAG, "  click点击失败 ");
                    }

                    @Override
                    public void clickSuccess(ClickEvent clickEvent) {
                        Toast.makeText(getApplicationContext(), "点击成功", Toast.LENGTH_SHORT).show();
                        Log.i(TAG, "  click点击成功 ");
                    }
                });
        JavaScript.JavaScriptBuilder.executeEvent(clickEvent, webView);

2.3 滚动事件

例如: 滚动到指定的元素位置,让该元素滚动屏幕中间。

通过浏览器获取到元素的css选择器:

image

这里滚动到我的个人博客列表中,第九个角标位置。

    doScroll("\"ul.colu_author_c>li\"", 8, 1000);

    public void doScroll(String elementName, int index, int delayTime) {
        ScrollEvent scrollEvent = ScrollEvent.create()
                .setElementName(elementName)
                .setDelayTime(delayTime)
                .setPosition(index)
                .setScrollTime(2000)
                .setListener(new Response.ScrollListener() {
                    @Override
                    public void scrollEnd(ScrollEvent scrollEvent) {
                        Log.i(TAG, " 滚动事件结束 ");
                    }

                    @Override
                    public void scrollFailure(ScrollEvent scrollEvent) {
                        Log.i(TAG, " 滚动事件失败 ");
                    }
                });
        JavaScript.JavaScriptBuilder.executeEvent(scrollEvent, webView);
    }

混淆规则:

-keep class com.xingen.androidjslib.injection.* {*;}

webviewlib's People

Contributors

13767004362 avatar

Stargazers

 avatar  avatar  avatar  avatar 江程训 avatar soulyxzq avatar  avatar  avatar rafa avatar loveextra avatar  avatar 墨点白 avatar Zane Chiang avatar  avatar  avatar  avatar  avatar  avatar mahongyin avatar Shengxiang Chong avatar  avatar Pawoo avatar Yinmany avatar  avatar fpEscort avatar aideng avatar Netsnake avatar cashlzcj avatar 诸葛先生 avatar  avatar 路子多 avatar Ray avatar  avatar  avatar  avatar  avatar  avatar kenuosec avatar BraveHeart1024 avatar  avatar  avatar  avatar D.W. avatar  avatar  avatar  avatar BattleCall avatar  avatar JulianZhu avatar kyXiao avatar  avatar allen avatar

Watchers

James Cloos avatar  avatar  avatar allen avatar Netsnake avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.