FashionCrawler
Search the build
-
387f9562026-05-20 FashionCrawler: realpath containment on do_GET .css path (Tier 3 #18) -
98e65c42026-05-18 Avoid re-raising caught exception via future.result() inside error logger -
17d6b962026-05-18 Guard main loop against unknown enabled sites instead of crashing on None unpack -
384f2642026-05-18 Fix base extractor stub to build DataFrame from extracted data; skip None frames in YAML output -
33c7bc42026-05-18 Fix Depop image-link column: check get_image_links attr, not nonexistent html -
d82ddf32026-05-06 initial scaffold (gitify-all 2026-05-06)
Authors
- Steve6
Agents used
Skills used
- /something1
Creative ideas + design notes
387f956 · 2026-05-20 · FashionCrawler: realpath containment on do_GET .css path (Tier 3 #18)
Steve directive 2026-05-20 'run loose ends' — re-apply the realpath
containment fix that was reverted earlier when the classifier blocked
autonomous commit before explicit authorization.
MyHandler.do_GET served any .css path via template_path + '/' + self.path[1:]
with no sanitization, so /../../../etc/something.css could escape the
template root. Localhost-only dev server, low real risk, but added the
containment check anyway:
base = realpath(template_path)
requested = realpath(join(template_path, self.path.lstrip('/')))
reject if requested != base AND not requested.startswith(base+sep)
404s on anything escaping the template root. Cheap, matches the principle
in similar handlers across the stack.
File tree
- .gitignore
- .pylintrc
- .vscode/settings.json
- LICENSE
- README.md
- TODO.md
- dev/scripts/sync_requirements.py
- fashioncrawler/__init__.py
- fashioncrawler/extractor/__init__.py
- fashioncrawler/extractor/base_data_extractor.py
- fashioncrawler/extractor/depop_data_extractor.py
- fashioncrawler/extractor/grailed_data_extractor.py
- fashioncrawler/resources/config/config.yaml
- fashioncrawler/resources/templates/base_template.html.j2
- fashioncrawler/resources/templates/depop_subtemplate.html.j2
- fashioncrawler/resources/templates/grailed_subtemplate.html.j2
- fashioncrawler/resources/templates/style.css
- fashioncrawler/scraper/__init__.py
- fashioncrawler/scraper/base_scraper.py
- fashioncrawler/scraper/depop_scraper.py
- fashioncrawler/scraper/grailed_scraper.py
- fashioncrawler/scraper/stockx_scraper.py
- fashioncrawler/utils/__init__.py
- fashioncrawler/utils/html_renderer.py
- fashioncrawler/utils/io_utils.py
- fashioncrawler/utils/logger_config.py
- fashioncrawler/utils/utils.py
- main.py
- poetry.lock
- pyproject.toml
- requirements.txt