Background
While collecting AI thumbnail prompt resources, access to note.com (kawaidesign’s paid-article platform) is required. This site uses CloudFront WAF to block all non-residential IPs; direct connections, system proxies (e.g., FlClash), and PinchTab all return HTTP 403.
A SOCKS5 proxy with a Japanese residential or IEPL (Internet Exchange Point Link) egress is needed to bypass the geo-restriction.
Solution Evaluation
| Approach | Result |
|---|---|
| Direct connection | 403 Forbidden |
| System proxy (FlClash) | GUI port not listening — unusable |
sslocal (shadowsocks-rust) |
Success — returns 200 OK |
We selected the sslocal client from shadowsocks-rust, extracting a Japanese IEPL node from our local Clash subscription configuration.
Installation
- shadowsocks-rust v1.24.0 ARM64 binary placed at
/usr/local/bin/sslocal - Downloaded from the shadowsocks-rust Releases page on GitHub
Configuration
Node details extracted from the Clash subscription config (dler.cloud.yaml) located in the host’s shared directory.
Configuration file: /tmp/ss-jp.json
{
"server": "[proxy-server-host]",
"server_port": 14623,
"method": "2022-blake3-aes-256-gcm",
"password": "[encrypted-password]",
"local_address": "127.0.0.1",
"local_port": 1089
}
Key configuration notes:
method:"2022-blake3-aes-256-gcm"is SIP022 — a newer, more secure protocol than legacy variants.local_port:1089, chosen to avoid conflicts with other local proxies (e.g., FlClash).- Config stored under
/tmpbecause it contains sensitive credentials — automatically cleared on reboot.
Starting / Stopping
# Start (daemon mode)
sslocal -c /tmp/ss-jp.json -d
# Verify egress IP
curl -x socks5h://127.0.0.1:1089 httpbin.org/ip
# Expected response: {"origin": "154.31.112.241"} (Japanese egress IP)
# Stop
kill $(pgrep sslocal)
Usage Examples
# curl via proxy
curl -x socks5h://127.0.0.1:1089 <url>
# Python httpx
import httpx
client = httpx.Client(proxy='socks5h://127.0.0.1:1089')
# trafilatura for webpage content extraction
curl -sL -x socks5h://127.0.0.1:1089 "<url>" | \
python3 -c "import sys; from trafilatura import extract; print(extract(sys.stdin.read()))"
Pitfalls & Lessons Learned
- FlClash unusable: Installed but GUI port not listening; CLI mode unstable → abandoned.
- Port confusion: Initially set
local_portto1089, then accidentally overrode it at runtime using--local-addr 127.0.0.1:11080. After restart, port reverted to1089. Lesson: Always use config files — avoid mixing CLI flags and config. - trafilatura missing: Not preinstalled; requires
pip3 install --break-system-packages trafilaturaon Debian 13 (due to PEP 668 system-package restrictions). - Proxy process management: Runs as a daemon in background — remember to
killit after use.
Applicable Scenarios
- Accessing Japanese platforms protected by CloudFront WAF geo-restrictions
- Bypassing sites that block datacenter IPs
- Web scraping tasks requiring a Japanese egress IP
Scope of Impact
This setup applies only to the Scout VM. The configuration method has been shared with DevOps via vm-dm; other VMs may adopt it by referencing this guide.
Enable on-demand and disable immediately after use. Configuration has been documented in Scout MEMORY.md.