日日爱影视_日本一区二区三区日本免费_大香焦伊人在钱8_欧美一级夜夜爽 - 日韩三级视频在线观看

當前位置:首頁 ? 做APP ? 正文

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’]):

me

ssage[‘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.APPurl:

# 如果是,則將響應體修改為 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\APP開發.1 ad\.xx\.com$/d” /etc/hosts’)

“`

以上就是三種屏蔽啟動廣告的方法,不過這些方法都可能會影響到應用的運行,尤其是修改系統文件的方法,需要慎重使用。此外,對于一些付費應用,存在去除廣告的行為是不道德的,因為開發者只有通過廣告才能獲得收益,我們應該尊重其付出的勞動成果。

未經允許不得轉載:http://www.glwnet.com/智電網絡 ? app 啟動廣告屏蔽開發者如何事項的?

相關推薦

推薦欄目