免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

app 启动广告屏蔽开发者

启动广告是现在很多应用都会在加载时出现的一种广告类型,一般会展示几秒钟,用户需要等待该广告加载结束才能进入应用主界面,但是很多用户并不喜欢这种广告,因为它不仅影响了用户体验,而且还增加了等待的时间,于是一些用户就开始寻找去除启动广告的方法,甚至一些开发者也会在自己的应用中加入去除启动广告的功能,此种情况很容易引起作为广告提供方的开发者的反感,那么这种屏蔽启动广告的方法是如何实现的呢?

一、原理介绍

1. 通过寻找广告的唯一识别符

每一个广告都会有一个唯一的标识符,一般在应用启动时会将该标识符记录下来,然后通过查找该标识符,就可以将该广告屏蔽掉,这种方法比较简单,但只限于针对某个应用的特定版本和特定广告,因为广告商可能会不断更换标识符。

2. 拦截网络请求

一般来说,广告需要通过网络请求加载显示,所以我们可以拦截应用中的网络请求,通过匹配请求的链接地址来屏蔽广告,这种方法更加通用,但需要我们了解广告提供方的API,不仅需要考虑到广告链接地址的匹配问题,还需要避免不必要的网络请求,以免影响用户的正常体验。

3. 修改系统文件

对于 Android 系统,我们可以通过修改 hosts 文件来屏蔽广告,因为 hosts 文件可以用来域名解析,我们可以在该文件中添加广告域名的解析地址,并将其解析到本地的一个 ip 地址即可,这样所有与这个广告域名有关的请求都会被解析到本地的 ip 地址上,从而达到屏蔽广告的效果,但该方法需要获取 ROOT 权限,对于一般用户来说不太友好。

二、详细介绍

1. 查找广告识别符

我们可以通过一些脚本和工具,来分析应用的代码结构,查找广告唯一识别符的位置,然后通过 hook 的方式将其替换成空字符串或随机字符串,来达到屏蔽广告的效果。

下面是一个简单的 Python 脚本实现,具体方法为通过 frida 框架 hook 应用中的字符串查找函数,判断是否为广告唯一识别符,如果是则将其替换成空字符串:

```python

import frida

# hook 应用中的字符串查找函数

def on_message(message, data):

if message['type'] == 'send':

print(str(message['payload']))

if 'packed_trust_id' in str(message['payload']):

message['payload'] = message['payload'].replace('"packed_trust_id": "xxxxxxxxxxx"', '"packed_trust_id": ""')

message['payload'] = message['payload'].replace('"trust_id": ""', '"trust_id": "xxxxxxxxxxx"')

# 手机连接模拟器或真机

device = frida.get_device_manager().enumerate_devices()[-1]

# 打开应用

session = device.attach("com.example.app")

# 加载 JavaScript 脚本

with open('script.js', 'r', encoding='utf-8') as f:

script = session.create_script(f.read())

# 监听消息

script.on("message", on_message)

# 加载 JavaScript 脚本

script.load()

```

2. 拦截网络请求

我们可以通过一些中间件来拦截应用内的网络请求,从而实现去除应用内的广告,这种方法通用性强,但实现起来比较复杂,需要了解一些网络协议和相关技术,下面是 Python 中拦截 HTTP 请求的一个例子:

```python

import mitmproxy.http

def request(flow: mitmproxy.http.HTTPFlow):

# 判断该请求是否为广告请求

if 'https://ad.xx.com/api' in flow.request.url:

# 如果是,则将响应体修改为 JSON 格式的字符串 {"code": 0}

flow.response.text = '{"code": 0}'

def response(flow: mitmproxy.http.HTTPFlow):

# 判断该响应是否为广告响应

if 'https://ad.xx.com/api' in flow.request.url:

# 如果是,则将响应体修改为 JSON 格式的字符串 {"code": 0}

flow.response.text = '{"code": 0}'

```

3. 修改系统文件

我们可以通过修改 Android 系统中的 hosts 文件来实现屏蔽广告的效果,这种方法简单易行,但需要获取 ROOT 权限,下面是一个 Python 实现 hosts 文件修改的脚本:

```python

import os

# 添加广告域名到 hosts 文件中

def append_hosts():

os.system('su')

os.system('echo "127.0.0.1 ad.xx.com" >> /etc/hosts')

# 删除广告域名记录

def remove_hosts():

os.system('su')

os.system('sed -i "/127\.0\.0\.1 ad\.xx\.com$/d" /etc/hosts')

```

以上就是三种屏蔽启动广告的方法,不过这些方法都可能会影响到应用的运行,尤其是修改系统文件的方法,需要慎重使用。此外,对于一些付费应用,存在去除广告的行为是不道德的,因为开发者只有通过广告才能获得收益,我们应该尊重其付出的劳动成果。


相关知识:
陕西漫画app开发多少钱
陕西漫画app开发的费用是根据开发公司的规模、开发人员的工作经验、项目的复杂程度、功能模块的数量以及开发周期等因素而定。一般而言,开发一款基本功能齐全的漫画app需要5万-20万不等。以下是详细的介绍:1.功能模块开发一款漫画app需要考虑的功能模块包括用
2024-01-10
c开发app
C是一种非常强大且广泛使用的编程语言,它能够用于开发各种类型的应用程序,包括桌面应用程序、移动应用程序、嵌入式系统和网络应用程序等等。本文将为你介绍C开发应用程序的原理和详细步骤。首先,你需要一个C编译器来将C代码转换为可执行的机器代码。常见的C编译器有G
2023-07-14
app商城开发步骤及价钱
标题:APP商城开发步骤及价格详解引言:随着智能手机的普及,移动应用程序(APP)的需求也越来越大。APP商城作为一个平台,可以帮助用户下载、安装和更新各种应用程序。本文将详细介绍APP商城开发的步骤,并对开发过程中可能的价格进行介绍。一、需求分析:在进行
2023-07-14
app之敏捷开发
敏捷开发是一种软件开发方法论,旨在通过迭代和增量的方式,快速交付高质量的软件。敏捷开发的核心理念是通过快速反馈和灵活适应的原则来面对不确定性和变化。在这篇文章中,我将为大家介绍敏捷开发的原理以及详细的开发流程。敏捷开发的原理:1. 客户参与:敏捷开发注重与
2023-07-14
app专业开发要多少钱
App专业开发所需的费用是一个比较复杂的问题,涉及到很多因素,包括开发团队的规模、开发的复杂程度、所需功能的数量和复杂度、开发时间等等。在此我将从几个关键方面来介绍App专业开发的费用。1. 开发团队App开发通常需要一个开发团队,包括项目经理、开发人员、
2023-07-14
apple碳中和对包装开发的影响
苹果公司于2021年4月20日发布了一份名为「环境报告2021」的报告,其中明确了他们的碳中和计划,并且承诺到2030年实现全球碳中和。其中,包括对包装开发的影响。那么具体来说,苹果公司的碳中和计划对包装开发有什么影响?首先,先了解一下什么是碳中和。碳中和
2023-05-06