A2C工单修复
This commit is contained in:
+37
-9
@@ -64,34 +64,37 @@ class A2c extends AbstractScrmSpider
|
||||
}
|
||||
|
||||
/**
|
||||
* A2C:业务域无需 cf_clearance;短链仍作 pageUrl,sessionKey 固定业务域
|
||||
* A2C:业务域 + 分享 id 会话;短链仍作 pageUrl,landingUrlHint 供 Node 直达长链
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
private function buildAntiBotConfig()
|
||||
{
|
||||
$sessionHost = $this->resolveA2cSessionHost();
|
||||
$sessionScope = $this->resolveA2cSessionScope();
|
||||
|
||||
return [
|
||||
'enabled' => true,
|
||||
'profile' => 'real',
|
||||
'turnstile' => true,
|
||||
'solverFallback' => false,
|
||||
'solverFallback' => true,
|
||||
'cfClearanceRequired' => false,
|
||||
'sessionKey' => 'a2c:' . $sessionHost,
|
||||
'sessionKey' => 'a2c:' . $sessionScope,
|
||||
'challengeTimeoutMs' => 60000,
|
||||
'landingUrlHint' => $this->landingUrl,
|
||||
'businessHostHint' => $sessionHost,
|
||||
'cfCloudflareSolver' => true,
|
||||
'cfChallengeMode' => 'managed',
|
||||
'businessHostHint' => $this->resolveA2cSessionHost(),
|
||||
'postCfReadyUrlContains' => '/visitors/counter/share',
|
||||
'postCfReadySelector' => '.btn-next',
|
||||
'postCfReadyTimeoutMs' => 30000,
|
||||
'postCfReadySelector' => '.el-table',
|
||||
'postCfReadyApiUrl' => '/api/talk/counter/share/record/list',
|
||||
'postCfReadyTimeoutMs' => 60000,
|
||||
'postCfSettleMs' => 500,
|
||||
'postCfSpaWaitMs' => 4000,
|
||||
'postCfSpaWaitMs' => 8000,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* A2C 会话域:HTTP 预解析无法穿透短链 CF 时,回退到业务域 user.a2c.chat
|
||||
* A2C 业务域 host
|
||||
*/
|
||||
private function resolveA2cSessionHost()
|
||||
{
|
||||
@@ -111,6 +114,31 @@ class A2c extends AbstractScrmSpider
|
||||
return 'user.a2c.chat';
|
||||
}
|
||||
|
||||
/**
|
||||
* A2C 会话 scope:host + share id
|
||||
*/
|
||||
private function resolveA2cSessionScope()
|
||||
{
|
||||
$host = $this->resolveA2cSessionHost();
|
||||
$shareId = $this->extractA2cShareId($this->pageUrl);
|
||||
if ($shareId === '' && $this->landingUrl !== '') {
|
||||
$shareId = $this->extractA2cShareId($this->landingUrl);
|
||||
}
|
||||
|
||||
return $shareId !== '' ? $host . ':' . $shareId : $host;
|
||||
}
|
||||
|
||||
private function extractA2cShareId($url)
|
||||
{
|
||||
$query = (string) parse_url($url, PHP_URL_QUERY);
|
||||
if ($query === '') {
|
||||
return '';
|
||||
}
|
||||
parse_str($query, $params);
|
||||
|
||||
return isset($params['id']) ? trim((string) $params['id']) : '';
|
||||
}
|
||||
|
||||
protected function extractListTotalPages($listFirstPageData, $countData = null)
|
||||
{
|
||||
$default_per_page_count = self::DEFAULT_PER_PAGE_COUNT;
|
||||
|
||||
Reference in New Issue
Block a user