Si vous désactivez javascript, la plupart des publicités disparaîtront, mais si vous ne pouvez pas utiliser javascript, ce n'est pas pratique, c'est donc un mémo lorsque vous implémentez adblock. En anglais, le matériel était approprié, mais je n'ai pas trouvé la page japonaise.
Vous pouvez l'implémenter en suivant cette page https://www.hidroh.com/2016/05/19/hacking-up-ad-blocker-android/
Liste des hébergeurs publicitaires https://sites.google.com/site/hosts2ch/
Remplacez WebViewClient.shouldInterceptRequest () pour déterminer si l'URL de la requête de la page est l'hôte de diffusion d'annonces. S'il s'agit d'une publicité, elle renvoie une réponse vide. c'est tout.
Vous pouvez télécharger une liste d'hôtes diffusant des annonces à l'adresse https://sites.google.com/site/hosts2ch/. (Très pratique .. !!) Je pense que cela ressemblera à ceci une fois téléchargé, donc je vais le modeler pour qu'il soit facile à manipuler.
ja.txt
# hosts2ch - Japanese mobile ad servers hosts file.
# This file is public domain, of course.
#
# file size: 34 kB
# entries: 1279
#
# ---------- last updated: 2019-01-16 ----------
127.0.0.1 100234.advision-adnw.jp
127.0.0.1 100291.adnico.jp
127.0.0.1 100602.advision-adnw.jp
127.0.0.1 100651.advision-adnw.jp
127.0.0.1 100800.advision-adnw.jp
127.0.0.1 101623.sprout-ad.com
127.0.0.1 107008.speead.jp
127.0.0.1 150601.fc2rs.com
127.0.0.1 1tmg.info
127.0.0.1 2.chmato.me
・
・
・
Supprimez la ligne de commentaire et la colonne d'adresse IP pour en faire un hôte uniquement et nommez le fichier hosts.txt. Comme ça ↓
hosts.txt
100234.advision-adnw.jp
100291.adnico.jp
100602.advision-adnw.jp
100651.advision-adnw.jp
100800.advision-adnw.jp
101623.sprout-ad.com
107008.speead.jp
150601.fc2rs.com
1tmg.info
2.chmato.me
・
・
・
Ajoutez-le au dossier des actifs. Si le dossier des ressources n'existe pas, créez-le.
AdBlocker.java
public class AdBlocker {
private static final String AD_HOSTS_FILE = "hosts.txt";
private static final Set<String> AD_HOSTS = new HashSet<>();
public static void init(final Context context) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
loadFromAssets(context);
} catch (IOException e) {
// noop
}
return null;
}
}.execute();
}
@WorkerThread
private static void loadFromAssets(Context context) throws IOException {
InputStream stream = context.getAssets().open(AD_HOSTS_FILE);
BufferedSource buffer = Okio.buffer(Okio.source(stream));
String line;
while ((line = buffer.readUtf8Line()) != null) {
AD_HOSTS.add(line);
}
buffer.close();
stream.close();
}
public static boolean isAd(String url) {
HttpUrl httpUrl = HttpUrl.parse(url);
return isAdHost(httpUrl != null ? httpUrl.host() : "");
}
private static boolean isAdHost(String host) {
if (TextUtils.isEmpty(host)) {
return false;
}
int index = host.indexOf(".");
return index >= 0 && (AD_HOSTS.contains(host) ||
index + 1 < host.length() && isAdHost(host.substring(index + 1)));
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static WebResourceResponse createEmptyResource() {
return new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
}
}
Remplacez et implémentez la méthode shouldInterceptRequest () de WebViewClient. Toutes les demandes de la source lues par webview passent par shouldInterceptRequest () une fois (je comprends que c'est correct)
MyWebViewClient.java
private Map<String, Boolean> loadedUrls = new HashMap<>();
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@override99
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
boolean ad;
if (!loadedUrls.containsKey(url)) {
ad = AdBlocker.isAd(url);
loadedUrls.put(url, ad);
} else {
ad = mLoadedUrls.get(url);
}
return ad ? AdBlocker.createEmptyResource() :
super.shouldInterceptRequest(view, url);
}
Initialisez AdBlocker dans MyApplication qui hérite de l'application.
MyApplication.java
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AdBlocker.init(this);
}
}
N'oubliez pas de l'ajouter à Android Manifest.
AndroidManifest.xml
<application
android:name="MyApplication"
....
....
/>
https://www.hidroh.com/2016/05/19/hacking-up-ad-blocker-android/ Presque comme indiqué sur cette page, veuillez donc vous reporter ici pour plus de détails.
Recommended Posts