This commit is contained in:
Horis
2023-06-11 20:28:02 +08:00
parent f409ef6ec4
commit 312c50731e
@@ -371,6 +371,19 @@ class AnalyzeUrl(
} }
} }
/**
* 获取并发记录,若处于并发限制状态下则会等待
*/
private suspend fun getConcurrentRecord(): ConcurrentRecord? {
while (true) {
try {
return fetchStart()
} catch (e: ConcurrentException) {
delay(e.waitTime.toLong())
}
}
}
/** /**
* 访问网站,返回StrResponse * 访问网站,返回StrResponse
*/ */
@@ -383,15 +396,7 @@ class AnalyzeUrl(
if (type != null) { if (type != null) {
return StrResponse(url, HexUtil.encodeHexStr(getByteArrayAwait())) return StrResponse(url, HexUtil.encodeHexStr(getByteArrayAwait()))
} }
var concurrentRecord: ConcurrentRecord? val concurrentRecord = getConcurrentRecord()
while (true) {
try {
concurrentRecord = fetchStart()
break
} catch (e: ConcurrentException) {
delay(e.waitTime.toLong())
}
}
try { try {
setCookie() setCookie()
val strResponse: StrResponse val strResponse: StrResponse
@@ -455,7 +460,7 @@ class AnalyzeUrl(
} }
return strResponse return strResponse
} finally { } finally {
saveCookie() //saveCookie()
fetchEnd(concurrentRecord) fetchEnd(concurrentRecord)
} }
} }
@@ -477,15 +482,7 @@ class AnalyzeUrl(
*/ */
@Throws(ConcurrentException::class) @Throws(ConcurrentException::class)
suspend fun getResponseAwait(): Response { suspend fun getResponseAwait(): Response {
var concurrentRecord: ConcurrentRecord? val concurrentRecord = getConcurrentRecord()
while (true) {
try {
concurrentRecord = fetchStart()
break
} catch (e: ConcurrentException) {
delay(e.waitTime.toLong())
}
}
try { try {
setCookie() setCookie()
val response = getProxyClient(proxy).newCallResponse(retry) { val response = getProxyClient(proxy).newCallResponse(retry) {
@@ -510,7 +507,7 @@ class AnalyzeUrl(
} }
return response return response
} finally { } finally {
saveCookie() //saveCookie()
fetchEnd(concurrentRecord) fetchEnd(concurrentRecord)
} }
} }