A2C工单修复

This commit is contained in:
root
2026-07-03 20:12:20 +08:00
parent c3223f026e
commit 0f3eb53afe
21 changed files with 1561 additions and 172 deletions
+37 -9
View File
@@ -64,34 +64,37 @@ class A2c extends AbstractScrmSpider
}
/**
* A2C:业务域无需 cf_clearance;短链仍作 pageUrlsessionKey 固定业务域
* A2C:业务域 + 分享 id 会话;短链仍作 pageUrllandingUrlHint 供 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 会话 scopehost + 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;
+1 -1
View File
@@ -85,7 +85,7 @@ try {
// 长链:快速验证业务页拦截(推荐先测通)
// $pageUrl = 'https://user.a2c.chat/visitors/counter/share?id=1b2cf9a91e2647c185b252e723c871de';
// 短链:与客户后台一致,上线前必须回归
$pageUrl = 'https://yyk.ink/3xj1B2';
$pageUrl = 'https://yyk.ink/5H3O8b';
$username = "";
$password = "";
$spider = (new A2c($pageUrl, $username, $password))->setVerbose(true);