I found that the server providing the source archive of a part rejects the download request but it works fine using a different User-Agent, it may be helpful is Snapcraft supports customizing the User-Agent header.
brlin@brlin-fw13:~/文件/iscan-snap$ curl --head https://support.epson.net/linux/src/scanner/iscan/iscan-data_1.39.2-1.tar.gz
HTTP/1.1 200 Connection Established
HTTP/1.1 403 Forbidden
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 465
Expires: Sat, 22 Jun 2024 11:15:30 GMT
Date: Sat, 22 Jun 2024 11:15:30 GMT
Connection: close
brlin@brlin-fw13:~/文件/iscan-snap$ curl --head --user-agent 'aaa' https://support.epson.net/linux/src/scanner/iscan/iscan-data_1.39.2-1.tar.gz
HTTP/1.1 200 Connection Established
HTTP/1.1 200 OK
Content-Type: application/x-gzip
Content-Length: 104980
Server: Apache
Last-Modified: Tue, 17 Nov 2020 05:28:03 GMT
ETag: "19a14-5b446c23c5ec0"
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Date: Sat, 22 Jun 2024 11:16:06 GMT
Connection: keep-alive
For now, I guess I just override the pull phase and implement the download myself.