[skip ci] Add imports to proxy setup for easier copy&paste (#12940)

Also minor tweaks to remove reduntant code, suppress warning.
This commit is contained in:
Vetle Ledaal 2022-08-11 12:02:09 +00:00 committed by GitHub
parent cf1bca5c81
commit 066345d70f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 6 deletions

View File

@ -557,7 +557,7 @@ Inspecting the Logcat allows you to get a good look at the call flow and it's mo
If you want to take a deeper look into the network flow, such as taking a look into the request and response bodies, you can use an external tool like `mitm-proxy`. If you want to take a deeper look into the network flow, such as taking a look into the request and response bodies, you can use an external tool like `mitm-proxy`.
#### Setup your proxy server #### Setup your proxy server
We are going to use [mitm-proxy](https://mitmproxy.org/) but you can replace it with any other Web Debugger (i.e. Charles, burp, Fiddler etc). To install and execute, follow the commands bellow. We are going to use [mitm-proxy](https://mitmproxy.org/) but you can replace it with any other Web Debugger (i.e. Charles, Burp Suite, Fiddler etc). To install and execute, follow the commands bellow.
```console ```console
Install the tool. Install the tool.
@ -582,14 +582,28 @@ Since most of the manga sources are going to use HTTPS, we need to disable SSL v
```kotlin ```kotlin
class MangaSource : MadTheme( package eu.kanade.tachiyomi.extension.en.mangasource
import eu.kanade.tachiyomi.multisrc.mangatheme.mangasource
import android.annotation.SuppressLint
import okhttp3.OkHttpClient
import java.net.InetSocketAddress
import java.net.Proxy
import java.security.SecureRandom
import java.security.cert.X509Certificate
import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager
class MangaSource : MangaTheme(
"MangaSource", "MangaSource",
"https://example.com", "https://example.com",
"en" "en"
) { ) {
private fun OkHttpClient.Builder.ignoreAllSSLErrors(): OkHttpClient.Builder { private fun OkHttpClient.Builder.ignoreAllSSLErrors(): OkHttpClient.Builder {
val naiveTrustManager = object : X509TrustManager { val naiveTrustManager = @SuppressLint("CustomX509TrustManager")
override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf() object : X509TrustManager {
override fun getAcceptedIssuers(): Array<X509Certificate> = emptyArray()
override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) = Unit override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) = Unit
override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) = Unit override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) = Unit
} }
@ -600,15 +614,15 @@ class MangaSource : MadTheme(
}.socketFactory }.socketFactory
sslSocketFactory(insecureSocketFactory, naiveTrustManager) sslSocketFactory(insecureSocketFactory, naiveTrustManager)
hostnameVerifier(HostnameVerifier { _, _ -> true }) hostnameVerifier { _, _ -> true }
return this return this
} }
override val client: OkHttpClient = network.cloudflareClient.newBuilder() override val client: OkHttpClient = network.cloudflareClient.newBuilder()
.ignoreAllSSLErrors() .ignoreAllSSLErrors()
.proxy(Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8080))) .proxy(Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8080)))
....
.build() .build()
}
``` ```
Note: `10.0.2.2` is usually the address of your loopback interface in the android emulator. If Tachiyomi tells you that it's unable to connect to 10.0.2.2:8080 you will likely need to change it (the same if you are using hardware device). Note: `10.0.2.2` is usually the address of your loopback interface in the android emulator. If Tachiyomi tells you that it's unable to connect to 10.0.2.2:8080 you will likely need to change it (the same if you are using hardware device).