Pinterest Scraper

Security checks across static analysis, malware telemetry, and agentic risk

Overview

The skill mostly matches its Pinterest scraping purpose, but it needs review because it disables normal HTTPS checks for image downloads and can upload all JPGs from the chosen output folder to Telegram.

Review before installing. Use a dedicated empty output folder, verify the Telegram chat and bot token before sending, install dependencies in an isolated environment, and consider changing the script to keep HTTPS certificate verification enabled by default.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

A network attacker or misconfigured connection could tamper with downloaded image files, and the tool may browse any URL the agent passes to it.

Why it was flagged

The scraper navigates to the supplied URL and downloads images with TLS certificate verification disabled. Browser access and downloads are purpose-aligned, but disabling HTTPS verification is an unsafe default that is not necessary for the core scraping purpose.

Skill content
page.goto(self.url, timeout=30000) ... r = requests.get(img_url, timeout=15, verify=False)
Recommendation

Validate that URLs are Pinterest domains and use TLS verification by default; make any insecure SSL workaround an explicit, clearly warned opt-in.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

Installing the skill pulls code and browser components from external package sources.

Why it was flagged

The setup requires unpinned Python packages and a Chromium browser install. This is expected for a Playwright-based scraper, but it is still an external supply-chain dependency.

Skill content
pip install playwright requests
playwright install chromium
Recommendation

Install in an isolated environment, use trusted package indexes, and consider pinning dependency versions before use.

#
ASI03: Identity and Privilege Abuse
Low
What this means

Anyone with the Telegram bot token may be able to act as that bot within its permissions.

Why it was flagged

The optional Telegram feature uses a bot token and chat ID to send media. This is disclosed and purpose-aligned, with no evidence of hardcoded or unrelated credential use.

Skill content
requests.post(f"https://api.telegram.org/bot{self.token}/sendMediaGroup", data={"chat_id": self.chat_id, "media": json.dumps(media)}, files=file_data, timeout=60)
Recommendation

Use a dedicated low-privilege Telegram bot, send only to the intended chat, and rotate the token if it is exposed.

#
ASI07: Insecure Inter-Agent Communication
Medium
What this means

If the output folder contains unrelated private JPGs, those files could be sent to the configured Telegram chat.

Why it was flagged

When Telegram mode is enabled, the script sends JPG files from the selected output folder to Telegram. The destination is disclosed, but the file selection is folder-wide rather than per-file.

Skill content
all_files = sorted([f for f in os.listdir(self.output_folder) if f.endswith('.jpg')]) ... files=file_data
Recommendation

Use a fresh dedicated output folder for each scrape and review its contents before enabling Telegram sending.

#
ASI06: Memory and Context Poisoning
Info
What this means

Local state and logs may reveal what Pinterest URL was scraped and which files were downloaded or sent.

Why it was flagged

The resume feature stores scrape state, downloaded URLs, and Telegram-sent filenames in a local state file under the output folder.

Skill content
self.state_file = os.path.join(output_folder, '.scrape_state.json') ... 'downloaded_urls': list(self.downloaded_urls), 'telegram_sent': list(self.telegram_sent)
Recommendation

Delete the output folder, .scrape_state.json, and scrape.log when you no longer need resume or audit history.