shadow1ng/fscan · error
webscan_poc_parse_failed
webscan_poc_parse_failed
Error message
webscan_poc_parse_failed %s: %w
What it means
Guard in parsePocYAML: LoadUniversalPoc failed to parse the POC file's YAML content, so the named file is skipped (LoadMultiPoc logs it via webscan_poc_load_one_failed) and the error wraps the parse failure with the offending file name.
Source
Thrown at webscan/lib/Client.go:421
func LoadMultiPoc(Pocs embed.FS, pocname string) []*Poc {
var pocs []*Poc
// 遍历选中的POC文件
for _, f := range SelectPoc(Pocs, pocname) {
if p, err := LoadPoc(f, Pocs); err == nil {
pocs = append(pocs, p)
} else {
common.LogError(i18n.Tr("webscan_poc_load_one_failed", f, err))
}
}
return pocs
}
// parsePocYAML 解析POC YAML内容(提取公共逻辑)
func parsePocYAML(data []byte, fileName string) (*Poc, error) {
// 使用通用适配器加载POC(自动识别格式)
universalPoc, err := LoadUniversalPoc(fileName, data)
if err != nil {
return nil, fmt.Errorf("%s %s: %w", i18n.GetText("webscan_poc_parse_failed"), fileName, err)
}
// 转换为fscan内部格式
poc, err := universalPoc.ToFscanPoc()
if err != nil {
return nil, fmt.Errorf("%s %s: %w", i18n.GetText("webscan_poc_convert_failed"), fileName, err)
}
return poc, nil
}
// LoadPoc 从内嵌文件系统加载单个POC
func LoadPoc(fileName string, Pocs embed.FS) (*Poc, error) {
// 读取POC文件内容
yamlFile, err := Pocs.ReadFile("pocs/" + fileName)
if err != nil {
return nil, fmt.Errorf("%s %s: %w", i18n.GetText("webscan_poc_file_read_failed"), fileName, err)
}View on GitHub (pinned to 95cc12e753)
Solutions
- Fix YAML syntax errors in the named POC file
- Ensure the POC matches the supported format/schema
- Regenerate or re-download a known-good POC file
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at webscan/lib/Client.go:421 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/a73274c8991d46c6.
Report an issue: GitHub.