Spaces:
Sleeping
Sleeping
fix: SSRF IPv6 bypass, SIGINT handler, README accuracy fixes
Browse files- README.md +20 -6
- demo-output/1-twitter-with.txt +209 -0
- demo-output/1-twitter-without.txt +10 -0
- demo-output/2-linkedin-with.txt +364 -0
- demo-output/2-linkedin-without.txt +10 -0
- demo-output/3-soroswap-with.txt +274 -0
- demo-output/3-soroswap-without.txt +9 -0
- demo-output/4-producthunt-with.txt +29 -0
- demo-output/4-producthunt-without.txt +8 -0
- save-demo.js +102 -0
- server.js +9 -6
README.md
CHANGED
|
@@ -85,8 +85,6 @@ All tested against the live deployed service at `tantk-rendergate.hf.space` with
|
|
| 85 |
| coinmarketcap.com | 6.0s | Full token page, rankings, data |
|
| 86 |
| defillama.com | 3.6s | TVL, fees, revenue, protocol rankings |
|
| 87 |
| dexscreener.com | 5.7s | Live pair data — price, volume, liquidity, buy/sell ratio |
|
| 88 |
-
| stellar.expert | 4.5s | Block explorer, network stats |
|
| 89 |
-
| stellarchain.io | 4.7s | Explorer, price, assets |
|
| 90 |
| solscan.io | 4.4s | Solana explorer, analytics |
|
| 91 |
| etherscan.io | — | Blocked (Cloudflare challenge) |
|
| 92 |
| nansen.ai | 3.7s | Landing page content |
|
|
@@ -189,12 +187,12 @@ Then the agent can simply call `render_page("https://x.com/stellarorg")` — pay
|
|
| 189 |
```javascript
|
| 190 |
import { wrapFetchWithPayment } from "@x402/fetch";
|
| 191 |
|
| 192 |
-
|
| 193 |
const response = await paidFetch(
|
| 194 |
"https://tantk-rendergate.hf.space/render?url=https://x.com/stellarorg"
|
| 195 |
);
|
| 196 |
const data = await response.json();
|
| 197 |
-
// { title
|
| 198 |
```
|
| 199 |
|
| 200 |
The agent just needs:
|
|
@@ -224,11 +222,14 @@ Returns service info and usage instructions.
|
|
| 224 |
Health check.
|
| 225 |
|
| 226 |
### `GET /render?url=<encoded_url>` (paid — $0.001 USDC)
|
| 227 |
-
Renders the URL with a headless browser and returns:
|
| 228 |
```json
|
| 229 |
{
|
| 230 |
"title": "Stellar (@StellarOrg) / X",
|
| 231 |
-
"
|
|
|
|
|
|
|
|
|
|
| 232 |
"url": "https://x.com/stellarorg",
|
| 233 |
"renderedAt": "2026-04-13T06:59:12.395Z",
|
| 234 |
"renderTimeMs": 8071,
|
|
@@ -236,6 +237,19 @@ Renders the URL with a headless browser and returns:
|
|
| 236 |
}
|
| 237 |
```
|
| 238 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 239 |
## Architecture
|
| 240 |
|
| 241 |
```
|
|
|
|
| 85 |
| coinmarketcap.com | 6.0s | Full token page, rankings, data |
|
| 86 |
| defillama.com | 3.6s | TVL, fees, revenue, protocol rankings |
|
| 87 |
| dexscreener.com | 5.7s | Live pair data — price, volume, liquidity, buy/sell ratio |
|
|
|
|
|
|
|
| 88 |
| solscan.io | 4.4s | Solana explorer, analytics |
|
| 89 |
| etherscan.io | — | Blocked (Cloudflare challenge) |
|
| 90 |
| nansen.ai | 3.7s | Landing page content |
|
|
|
|
| 187 |
```javascript
|
| 188 |
import { wrapFetchWithPayment } from "@x402/fetch";
|
| 189 |
|
| 190 |
+
const paidFetch = wrapFetchWithPayment(fetch, x402Client);
|
| 191 |
const response = await paidFetch(
|
| 192 |
"https://tantk-rendergate.hf.space/render?url=https://x.com/stellarorg"
|
| 193 |
);
|
| 194 |
const data = await response.json();
|
| 195 |
+
// { title, description, headings, links, content, renderTimeMs, payment }
|
| 196 |
```
|
| 197 |
|
| 198 |
The agent just needs:
|
|
|
|
| 222 |
Health check.
|
| 223 |
|
| 224 |
### `GET /render?url=<encoded_url>` (paid — $0.001 USDC)
|
| 225 |
+
Renders the URL with a headless browser and returns structured output:
|
| 226 |
```json
|
| 227 |
{
|
| 228 |
"title": "Stellar (@StellarOrg) / X",
|
| 229 |
+
"description": "Meta description from the page",
|
| 230 |
+
"headings": [{ "level": "H1", "text": "Stellar's posts" }],
|
| 231 |
+
"links": [{ "text": "stellar.org", "href": "https://stellar.org" }],
|
| 232 |
+
"content": "Full rendered text content...",
|
| 233 |
"url": "https://x.com/stellarorg",
|
| 234 |
"renderedAt": "2026-04-13T06:59:12.395Z",
|
| 235 |
"renderTimeMs": 8071,
|
|
|
|
| 237 |
}
|
| 238 |
```
|
| 239 |
|
| 240 |
+
If the page is blocked or empty, the payment is automatically refunded:
|
| 241 |
+
```json
|
| 242 |
+
{
|
| 243 |
+
"title": "Just a moment...",
|
| 244 |
+
"content": "Cloudflare security verification...",
|
| 245 |
+
"refund": {
|
| 246 |
+
"transaction": "bf68b792...",
|
| 247 |
+
"amount": "0.001 USDC",
|
| 248 |
+
"reason": "blocked_page"
|
| 249 |
+
}
|
| 250 |
+
}
|
| 251 |
+
```
|
| 252 |
+
|
| 253 |
## Architecture
|
| 254 |
|
| 255 |
```
|
demo-output/1-twitter-with.txt
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== RenderGate: https://x.com/stellarorg ===
|
| 2 |
+
Payment: $0.001 USDC on stellar:testnet
|
| 3 |
+
Render time: 7550ms
|
| 4 |
+
|
| 5 |
+
Title: Stellar (@StellarOrg) / X
|
| 6 |
+
|
| 7 |
+
Headings (3):
|
| 8 |
+
H2: Stellar
|
| 9 |
+
H1: Stellar’s posts
|
| 10 |
+
H2: New to X?
|
| 11 |
+
|
| 12 |
+
Links (50):
|
| 13 |
+
Log in → https://x.com/login
|
| 14 |
+
Sign up → https://x.com/i/flow/signup
|
| 15 |
+
stellar.org → https://t.co/M9vXjqAEiU
|
| 16 |
+
Joined April 2014 → https://x.com/StellarOrg/about
|
| 17 |
+
710 Following → https://x.com/StellarOrg/following
|
| 18 |
+
840.1K Followers → https://x.com/StellarOrg/verified_followers
|
| 19 |
+
Posts → https://x.com/StellarOrg
|
| 20 |
+
Affiliates → https://x.com/StellarOrg/affiliates
|
| 21 |
+
Replies → https://x.com/StellarOrg/with_replies
|
| 22 |
+
Highlights → https://x.com/StellarOrg/highlights
|
| 23 |
+
Media → https://x.com/StellarOrg/media
|
| 24 |
+
Stellar → https://x.com/StellarOrg
|
| 25 |
+
@StellarOrg → https://x.com/StellarOrg
|
| 26 |
+
Apr 11 → https://x.com/StellarOrg/status/2043019271542820961
|
| 27 |
+
11K → https://x.com/StellarOrg/status/2043019271542820961/analytics
|
| 28 |
+
|
| 29 |
+
Content (3765 chars):
|
| 30 |
+
Don’t miss what’s happening
|
| 31 |
+
People on X are the first to know.
|
| 32 |
+
Log in
|
| 33 |
+
Sign up
|
| 34 |
+
Stellar
|
| 35 |
+
9,913 posts
|
| 36 |
+
Follow
|
| 37 |
+
See new posts
|
| 38 |
+
Follow
|
| 39 |
+
Stellar
|
| 40 |
+
@StellarOrg
|
| 41 |
+
Stellar is a network for innovators building real-world blockchain solutions that create financial access for everyone.
|
| 42 |
+
Financial ServicesSan Francisco, Castellar.org
|
| 43 |
+
Joined April 2014
|
| 44 |
+
710 Following
|
| 45 |
+
840.1K Followers
|
| 46 |
+
Posts
|
| 47 |
+
Affiliates
|
| 48 |
+
Replies
|
| 49 |
+
Highlights
|
| 50 |
+
Media
|
| 51 |
+
Stellar’s posts
|
| 52 |
+
Stellar
|
| 53 |
+
@StellarOrg
|
| 54 |
+
·
|
| 55 |
+
Apr 11
|
| 56 |
+
10 days until Stellar House. Who's joining us in CDMX?
|
| 57 |
+
9
|
| 58 |
+
43
|
| 59 |
+
282
|
| 60 |
+
11K
|
| 61 |
+
Stellar reposted
|
| 62 |
+
Tomer Weller
|
| 63 |
+
@tomerweller
|
| 64 |
+
·
|
| 65 |
+
Apr 10
|
| 66 |
+
Epic roundup of defi on Stellar by
|
| 67 |
+
@AdaVaughan
|
| 68 |
+
Stellar | DeFi is happening on Stellar
|
| 69 |
+
From stellar.org
|
| 70 |
+
4
|
| 71 |
+
10
|
| 72 |
+
52
|
| 73 |
+
6.7K
|
| 74 |
+
Stellar
|
| 75 |
+
@StellarOrg
|
| 76 |
+
·
|
| 77 |
+
Apr 10
|
| 78 |
+
We made it to Friday Ecosystem spotlights in the thread.
|
| 79 |
+
12
|
| 80 |
+
29
|
| 81 |
+
336
|
| 82 |
+
14K
|
| 83 |
+
Show more replies
|
| 84 |
+
Stellar
|
| 85 |
+
@StellarOrg
|
| 86 |
+
·
|
| 87 |
+
Apr 10
|
| 88 |
+
Quote
|
| 89 |
+
Bastian Koh
|
| 90 |
+
@bastiankoh
|
| 91 |
+
·
|
| 92 |
+
Apr 7
|
| 93 |
+
wallet adoption skyrocketing in @BuildOnStellar with stellar passport, a workshop can get their attendees on-chain in seconds today, we brought students to the ecosystem and they kickstarted their builder path x.com/bastiankoh/sta…
|
| 94 |
+
2
|
| 95 |
+
4
|
| 96 |
+
25
|
| 97 |
+
6.3K
|
| 98 |
+
Stellar
|
| 99 |
+
@StellarOrg
|
| 100 |
+
·
|
| 101 |
+
Apr 10
|
| 102 |
+
Quote
|
| 103 |
+
Raj Karia
|
| 104 |
+
@rajkaria_
|
| 105 |
+
·
|
| 106 |
+
Apr 7
|
| 107 |
+
Aegis now supports @StellarOrg Big thanks to @0ceans404 for pushing to go live on Stellar. Here's what Stellar builders can do with Aegis today: → Query XLM + token balances via Horizon (no API key) → Verify Stellar transactions on-chain before granting API access → Fund
|
| 108 |
+
1
|
| 109 |
+
2
|
| 110 |
+
12
|
| 111 |
+
5.8K
|
| 112 |
+
Stellar
|
| 113 |
+
@StellarOrg
|
| 114 |
+
·
|
| 115 |
+
Apr 10
|
| 116 |
+
Privacy is the glass ceiling and we're on a mission to shatter it.
|
| 117 |
+
@tomerweller
|
| 118 |
+
talked about privacy all around Cannes. The highlights
|
| 119 |
+
0:56
|
| 120 |
+
4
|
| 121 |
+
50
|
| 122 |
+
259
|
| 123 |
+
10K
|
| 124 |
+
Stellar reposted
|
| 125 |
+
Denelle Dixon
|
| 126 |
+
@DenelleDixon
|
| 127 |
+
·
|
| 128 |
+
Apr 10
|
| 129 |
+
.
|
| 130 |
+
@KjOwusu
|
| 131 |
+
gets it exactly right: "the creator economy feels global until it's time to get paid." This is why we built
|
| 132 |
+
@akunawallet
|
| 133 |
+
, to create a bridge between immense talent and opportunity in Ghana and beyond.
|
| 134 |
+
Quote
|
| 135 |
+
Akuna Wallet
|
| 136 |
+
@akunawallet
|
| 137 |
+
·
|
| 138 |
+
Apr 10
|
| 139 |
+
Some Ghanaian creators have been waiting two months for X payouts. This is the structural problem we built Akuna Wallet to solve. A US bank account. Payments in USD, GBP & EUR. Earn globally, spend locally — no delays. Read more from our CEO, @KjOwusu: https://blog.akunawallet.com/ghanaian-creators-are-owed-better-than-this/…
|
| 140 |
+
4
|
| 141 |
+
13
|
| 142 |
+
84
|
| 143 |
+
10K
|
| 144 |
+
Stellar
|
| 145 |
+
@StellarOrg
|
| 146 |
+
·
|
| 147 |
+
Apr 9
|
| 148 |
+
Back to the future: local stablecoins edition.
|
| 149 |
+
@tomerweller
|
| 150 |
+
on block by block with
|
| 151 |
+
@DenelleDixon
|
| 152 |
+
7
|
| 153 |
+
32
|
| 154 |
+
158
|
| 155 |
+
9.4K
|
| 156 |
+
Stellar
|
| 157 |
+
@StellarOrg
|
| 158 |
+
·
|
| 159 |
+
Apr 9
|
| 160 |
+
Watch the episode below.
|
| 161 |
+
youtube.com
|
| 162 |
+
Is Blockchain Privacy a Trade-off? Scaling Confidential Payments on...
|
| 163 |
+
The biggest challenge for institutions moving to blockchain isn't efficiency - it's privacy. How do you leverage a public ledger without exposing client data...
|
| 164 |
+
1
|
| 165 |
+
21
|
| 166 |
+
8.7K
|
| 167 |
+
Stellar reposted
|
| 168 |
+
WisdomTree Prime®
|
| 169 |
+
@WisdomTreePrime
|
| 170 |
+
·
|
| 171 |
+
Apr 9
|
| 172 |
+
We didn’t build WisdomTree Prime to pull people offchain. We built it for the people already there. Across
|
| 173 |
+
@arbitrum
|
| 174 |
+
@avax
|
| 175 |
+
@base
|
| 176 |
+
@ethereum
|
| 177 |
+
@Optimism
|
| 178 |
+
@plumenetwork
|
| 179 |
+
@solana
|
| 180 |
+
@StellarOrg
|
| 181 |
+
One onchain hub.
|
| 182 |
+
3
|
| 183 |
+
11
|
| 184 |
+
62
|
| 185 |
+
6K
|
| 186 |
+
Stellar
|
| 187 |
+
@StellarOrg
|
| 188 |
+
·
|
| 189 |
+
Apr 9
|
| 190 |
+
Building a closed, private network is less secure, less efficient, and more expensive than working with an open network. That's why institutions—
|
| 191 |
+
@FTDA_US
|
| 192 |
+
,
|
| 193 |
+
@WisdomTreePrime
|
| 194 |
+
, and more—choose Stellar.
|
| 195 |
+
Quote
|
| 196 |
+
Denelle Dixon
|
| 197 |
+
@DenelleDixon
|
| 198 |
+
·
|
| 199 |
+
Apr 9
|
| 200 |
+
The long-term winners won't be the chains that control everything from the top down. They'll be the open networks where issuers, regulators, and validators set the rules together. https://stellar.org/blog/ecosystem/why-most-blockchains-still-fail-institutions-and-what-to-do-about-it…
|
| 201 |
+
5
|
| 202 |
+
56
|
| 203 |
+
330
|
| 204 |
+
20K
|
| 205 |
+
New to X?
|
| 206 |
+
Sign up now to get your own personalized timeline!
|
| 207 |
+
Sign up with Apple
|
| 208 |
+
Create account
|
| 209 |
+
By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.
|
demo-output/1-twitter-without.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== Normal HTTP Fetch: x.com/stellarorg ===
|
| 2 |
+
Command: curl https://x.com/stellarorg
|
| 3 |
+
|
| 4 |
+
html,body{height: 100%;}::cue{white-space:normal} [stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);
|
| 5 |
+
|
| 6 |
+
--- Total HTML size: 244567 bytes
|
| 7 |
+
--- Visible text content: 230936 chars
|
| 8 |
+
--- Tweets found: 0
|
| 9 |
+
--- Follower count: not available
|
| 10 |
+
--- Profile info: not available
|
demo-output/2-linkedin-with.txt
ADDED
|
@@ -0,0 +1,364 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== RenderGate: https://www.linkedin.com/company/stellar-development-foundation ===
|
| 2 |
+
Payment: $0.001 USDC on stellar:testnet
|
| 3 |
+
Render time: 4855ms
|
| 4 |
+
|
| 5 |
+
Title: Stellar Development Foundation | LinkedIn
|
| 6 |
+
Description: Stellar Development Foundation | 59,282 followers on LinkedIn. Stellar is network for innovators building real world blockchain solutions that create financial access for everyone 🪐 | Our mission is open source financial access for all.
|
| 7 |
+
|
| 8 |
+
The Stellar Development Foundation is a nonprofit organization based in San Francisco. We’re building a common financial platform, designed to be open and accessible to everyone.
|
| 9 |
+
|
| 10 |
+
Headings (48):
|
| 11 |
+
H1: Stellar Development Foundation
|
| 12 |
+
H2: Software Development
|
| 13 |
+
H3: San Francisco, CA 59,282 followers
|
| 14 |
+
H2: About us
|
| 15 |
+
H2: Products
|
| 16 |
+
H3: Stellar
|
| 17 |
+
H2: Locations
|
| 18 |
+
H2: Employees at Stellar Development Foundation
|
| 19 |
+
H3: Jed McCaleb
|
| 20 |
+
H3: Tyler Gentry
|
| 21 |
+
H3: Aaron Levin
|
| 22 |
+
H3: Christal Calderon Gauthier
|
| 23 |
+
H2: Updates
|
| 24 |
+
H2: Join now to see what you are missing
|
| 25 |
+
H2: Similar pages
|
| 26 |
+
|
| 27 |
+
Links (50):
|
| 28 |
+
Skip to main content → https://www.linkedin.com/company/stellar-development-foundation#main-content
|
| 29 |
+
LinkedIn → https://www.linkedin.com/?trk=organization_guest_nav-header-logo
|
| 30 |
+
Top Content → https://www.linkedin.com/top-content?trk=organization_guest_guest_nav_menu_topContent
|
| 31 |
+
People → https://www.linkedin.com/pub/dir/+/+?trk=organization_guest_guest_nav_menu_people
|
| 32 |
+
Learning → https://www.linkedin.com/learning/search?trk=organization_guest_guest_nav_menu_learning
|
| 33 |
+
Jobs → https://www.linkedin.com/jobs/search?trk=organization_guest_guest_nav_menu_jobs
|
| 34 |
+
Games → https://www.linkedin.com/games?trk=organization_guest_guest_nav_menu_games
|
| 35 |
+
Sign in → https://www.linkedin.com/login?session_redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fcompany%2Fstellar-development-foundation&fromSignIn=true&trk=organization_guest_nav-header-signin
|
| 36 |
+
Join now → https://www.linkedin.com/signup/cold-join?session_redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fcompany%2Fstellar-development-foundation&trk=organization_guest_nav-header-join
|
| 37 |
+
See jobs → https://www.linkedin.com/jobs/stellar-development-foundation-jobs-worldwide?f_C=3877937&trk=top-card_top-card-primary-button-top-card-primary-cta
|
| 38 |
+
Follow → https://www.linkedin.com/login?session_redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fcompany%2Fstellar-development-foundation&fromSignIn=true&trk=top-card_top-card-secondary-button-top-card-secondary-cta
|
| 39 |
+
Discover all 267 employees → https://www.linkedin.com/signup/cold-join?session_redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fsearch%2Fresults%2Fpeople%2F%3FfacetCurrentCompany%3D%255B3877937%255D&trk=org-employees_cta_face-pile-cta
|
| 40 |
+
Report this company → https://www.linkedin.com/uas/login?fromSignIn=true&session_redirect=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fstellar-development-foundation&trk=top-card_ellipsis-menu-semaphore-sign-in-redirect&guestReportContentType=COMPANY&_f=guest-reporting
|
| 41 |
+
https://www.stellar.org/ → https://www.linkedin.com/redir/redirect?url=https%3A%2F%2Fwww%2Estellar%2Eorg%2F&urlhash=ot4g&trk=about_website
|
| 42 |
+
Stellar → https://www.linkedin.com/products/stellar-development-foundation-stellar/
|
| 43 |
+
|
| 44 |
+
Content (6904 chars):
|
| 45 |
+
Skip to main content
|
| 46 |
+
LinkedIn
|
| 47 |
+
Top Content
|
| 48 |
+
People
|
| 49 |
+
Learning
|
| 50 |
+
Jobs
|
| 51 |
+
Games
|
| 52 |
+
Sign in
|
| 53 |
+
Join now
|
| 54 |
+
Stellar Development Foundation
|
| 55 |
+
Software Development
|
| 56 |
+
San Francisco, CA 59,282 followers
|
| 57 |
+
Stellar is network for innovators building real world blockchain solutions that create financial access for everyone 🪐
|
| 58 |
+
See jobs
|
| 59 |
+
Follow
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
Discover all 267 employees
|
| 63 |
+
|
| 64 |
+
About us
|
| 65 |
+
|
| 66 |
+
Our mission is open source financial access for all. The Stellar Development Foundation is a nonprofit organization based in San Francisco. We’re building a common financial platform, designed to be open and accessible to everyone. Just as the internet allowed anyone to send an email or create a blog, Stellar now allows people to easily send, save, and receive money, without large fees or hassle.
|
| 67 |
+
|
| 68 |
+
Website
|
| 69 |
+
https://www.stellar.org/
|
| 70 |
+
Industry
|
| 71 |
+
Software Development
|
| 72 |
+
Company size
|
| 73 |
+
51-200 employees
|
| 74 |
+
Headquarters
|
| 75 |
+
San Francisco, CA
|
| 76 |
+
Type
|
| 77 |
+
Nonprofit
|
| 78 |
+
Founded
|
| 79 |
+
2014
|
| 80 |
+
Products
|
| 81 |
+
Stellar
|
| 82 |
+
Stellar
|
| 83 |
+
Blockchain Platforms
|
| 84 |
+
|
| 85 |
+
The Stellar network is an open-source blockchain used for a variety of payment and remittance applications. Leverage a robust set of tools and products to harness the full potential of the Stellar blockchain. Check out all that's available to help you build on and explore the network.
|
| 86 |
+
|
| 87 |
+
Locations
|
| 88 |
+
Primary
|
| 89 |
+
|
| 90 |
+
San Francisco, CA 94102, US
|
| 91 |
+
|
| 92 |
+
Get directions
|
| 93 |
+
Employees at Stellar Development Foundation
|
| 94 |
+
Jed McCaleb
|
| 95 |
+
Tyler Gentry
|
| 96 |
+
Aaron Levin
|
| 97 |
+
Christal Calderon Gauthier
|
| 98 |
+
See all employees
|
| 99 |
+
Updates
|
| 100 |
+
Stellar Development Foundation
|
| 101 |
+
|
| 102 |
+
59,282 followers
|
| 103 |
+
|
| 104 |
+
2d
|
| 105 |
+
|
| 106 |
+
Privacy remains one of the biggest challenges in our industry, and we're committed to changing that.
|
| 107 |
+
|
| 108 |
+
Tomer Weller spent time at EthCC sharing his thoughts on why privacy matters and what we're doing about it.
|
| 109 |
+
|
| 110 |
+
…more
|
| 111 |
+
Play Video
|
| 112 |
+
28
|
| 113 |
+
1 Comment
|
| 114 |
+
Like
|
| 115 |
+
Comment
|
| 116 |
+
Share
|
| 117 |
+
Stellar Development Foundation
|
| 118 |
+
|
| 119 |
+
59,282 followers
|
| 120 |
+
|
| 121 |
+
3d Edited
|
| 122 |
+
|
| 123 |
+
The industry is going back to the future with local stablecoins, but this time with the infrastructure to support them.
|
| 124 |
+
|
| 125 |
+
Local stablecoins are becoming increasingly important, especially when it comes to off-ramping crypto to fiat.
|
| 126 |
+
|
| 127 |
+
Tomer Weller and Denelle Dixon discussed on block by block 👇
|
| 128 |
+
https://lnkd.in/d3Fhi2Uk
|
| 129 |
+
|
| 130 |
+
…more
|
| 131 |
+
Play Video
|
| 132 |
+
50
|
| 133 |
+
1 Comment
|
| 134 |
+
Like
|
| 135 |
+
Comment
|
| 136 |
+
Share
|
| 137 |
+
|
| 138 |
+
Stellar Development Foundation reposted this
|
| 139 |
+
|
| 140 |
+
Paul Wong
|
| 141 |
+
2w
|
| 142 |
+
|
| 143 |
+
Vietnam is laying the foundation for its next phase of economic and financial development. Stellar stands ready to help build the infrastructure that will get it there.
|
| 144 |
+
|
| 145 |
+
https://lnkd.in/eTE2uzdW
|
| 146 |
+
|
| 147 |
+
Jose Fernandez da Ponte, Raja Chakravorti, Betty Sun-Lucas
|
| 148 |
+
|
| 149 |
+
Các quỹ đầu tư nào từ Mỹ sẵn sàng tìm cơ hội ở Việt Nam?
|
| 150 |
+
1thegioi.vn
|
| 151 |
+
61
|
| 152 |
+
2 Comments
|
| 153 |
+
Like
|
| 154 |
+
Comment
|
| 155 |
+
Share
|
| 156 |
+
Stellar Development Foundation
|
| 157 |
+
|
| 158 |
+
59,282 followers
|
| 159 |
+
|
| 160 |
+
5d
|
| 161 |
+
|
| 162 |
+
What's holding onchain RWAs back isn't volume, it's velocity. And the key to unlocking it is privacy.
|
| 163 |
+
|
| 164 |
+
At WalletConnect in Cannes, Tomer Weller sat down with Sylvain Prigent and Dayana Aleksandrova to unpack how institutions like Societe Generale- FORGE are paving the path forward for adoption among traditional finance.
|
| 165 |
+
|
| 166 |
+
…more
|
| 167 |
+
Play Video
|
| 168 |
+
40
|
| 169 |
+
Like
|
| 170 |
+
Comment
|
| 171 |
+
Share
|
| 172 |
+
Stellar Development Foundation
|
| 173 |
+
|
| 174 |
+
59,282 followers
|
| 175 |
+
|
| 176 |
+
1w
|
| 177 |
+
|
| 178 |
+
Stellar now supports the Machine Payments Protocol (MPP), the open standard by Stripe and Tempo that lets AI agents pay for services over HTTP.
|
| 179 |
+
|
| 180 |
+
The MPP SDK handles any stablecoin on Stellar with server-sponsored fees so agents never need gas tokens.
|
| 181 |
+
|
| 182 |
+
https://lnkd.in/essVRwG3
|
| 183 |
+
|
| 184 |
+
176
|
| 185 |
+
2 Comments
|
| 186 |
+
Like
|
| 187 |
+
Comment
|
| 188 |
+
Share
|
| 189 |
+
Stellar Development Foundation
|
| 190 |
+
|
| 191 |
+
59,282 followers
|
| 192 |
+
|
| 193 |
+
1w
|
| 194 |
+
|
| 195 |
+
New city. New dates. Same mission.
|
| 196 |
+
Meridian is headed to Lisbon.
|
| 197 |
+
October 28–29.
|
| 198 |
+
More details to come.
|
| 199 |
+
|
| 200 |
+
95
|
| 201 |
+
2 Comments
|
| 202 |
+
Like
|
| 203 |
+
Comment
|
| 204 |
+
Share
|
| 205 |
+
Stellar Development Foundation
|
| 206 |
+
|
| 207 |
+
59,282 followers
|
| 208 |
+
|
| 209 |
+
1w
|
| 210 |
+
|
| 211 |
+
The informal economy accounts for 55–65% of Nigeria's GDP, but paying international suppliers remains a major challenge since dollar access is limited.
|
| 212 |
+
|
| 213 |
+
Sellers in Nigeria import roughly $20 billion in goods from China each year. So how do they pay their suppliers? Enter stablecoins.
|
| 214 |
+
|
| 215 |
+
Our friends at The Flip visited Computer Village in Lagos to see firsthand how crypto is solving a real-world financial problem. Watch the full episde below.
|
| 216 |
+
|
| 217 |
+
https://lnkd.in/gH_rdq7B
|
| 218 |
+
|
| 219 |
+
…more
|
| 220 |
+
Play Video
|
| 221 |
+
101
|
| 222 |
+
3 Comments
|
| 223 |
+
Like
|
| 224 |
+
Comment
|
| 225 |
+
Share
|
| 226 |
+
Stellar Development Foundation
|
| 227 |
+
|
| 228 |
+
59,282 followers
|
| 229 |
+
|
| 230 |
+
1w
|
| 231 |
+
|
| 232 |
+
Yardstick (Protocol 26) is coming, introducing new protocol configuration settings. The dates you need to know:
|
| 233 |
+
|
| 234 |
+
April 8 — Stable releases
|
| 235 |
+
April 16 — Testnet upgrade
|
| 236 |
+
May 6 — Mainnet vote
|
| 237 |
+
|
| 238 |
+
If you build on Stellar, here’s how to prepare👇
|
| 239 |
+
|
| 240 |
+
https://lnkd.in/eAZpmWMz
|
| 241 |
+
|
| 242 |
+
Stellar | Stellar Yardstick, Protocol 26 Upgrade Guide
|
| 243 |
+
stellar.org
|
| 244 |
+
28
|
| 245 |
+
Like
|
| 246 |
+
Comment
|
| 247 |
+
Share
|
| 248 |
+
Stellar Development Foundation
|
| 249 |
+
|
| 250 |
+
59,282 followers
|
| 251 |
+
|
| 252 |
+
1w Edited
|
| 253 |
+
|
| 254 |
+
In a conversation with Sylvain Prigent from Societe Generale-Forge and Dayana Aleksandrova at WalletConnect, Tomer Weller dropped the recipe for our secret sauce 👨🏻🍳
|
| 255 |
+
|
| 256 |
+
Together with MoneyGram, Stellar makes it possible to go from crypto to cash whenever you need to, globally.
|
| 257 |
+
|
| 258 |
+
…more
|
| 259 |
+
Play Video
|
| 260 |
+
40
|
| 261 |
+
Like
|
| 262 |
+
Comment
|
| 263 |
+
Share
|
| 264 |
+
Stellar Development Foundation
|
| 265 |
+
|
| 266 |
+
59,282 followers
|
| 267 |
+
|
| 268 |
+
1w
|
| 269 |
+
|
| 270 |
+
What does it take to put tokenized assets to work?
|
| 271 |
+
|
| 272 |
+
Here’s what Tomer Weller had to say at RWA SUMMIT.
|
| 273 |
+
|
| 274 |
+
- As an industry, we need to prioritize distribution and composability when tokenizing assets to get the best possible products in the right hands.
|
| 275 |
+
|
| 276 |
+
- A multichain approach is great as a distribution strategy, but it’s not the whole story. It’s critical to also prioritize partnerships with wallets.
|
| 277 |
+
|
| 278 |
+
- Franklin Templeton is one example of an institution bringing RWAs onchain well, with the BENJI token on Stellar.
|
| 279 |
+
|
| 280 |
+
- Asset managers require both openness and privacy. And privacy isn’t one size fits all. We need to have the best privacy solutions for every use case.
|
| 281 |
+
|
| 282 |
+
53
|
| 283 |
+
Like
|
| 284 |
+
Comment
|
| 285 |
+
Share
|
| 286 |
+
Similar pages
|
| 287 |
+
Ripple
|
| 288 |
+
|
| 289 |
+
Technology, Information and Internet
|
| 290 |
+
|
| 291 |
+
San Francisco, CA
|
| 292 |
+
|
| 293 |
+
PayKit
|
| 294 |
+
|
| 295 |
+
Financial Services
|
| 296 |
+
|
| 297 |
+
Hedera
|
| 298 |
+
|
| 299 |
+
Technology, Information and Internet
|
| 300 |
+
|
| 301 |
+
Las Vegas, Nevada
|
| 302 |
+
|
| 303 |
+
Circle
|
| 304 |
+
|
| 305 |
+
Financial Services
|
| 306 |
+
|
| 307 |
+
Show more similar pages
|
| 308 |
+
Browse jobs
|
| 309 |
+
Director jobs
|
| 310 |
+
1,220,357 open jobs
|
| 311 |
+
Engineer jobs
|
| 312 |
+
555,845 open jobs
|
| 313 |
+
Senior Software Engineer jobs
|
| 314 |
+
78,145 open jobs
|
| 315 |
+
Associate jobs
|
| 316 |
+
1,091,945 open jobs
|
| 317 |
+
Manager jobs
|
| 318 |
+
1,880,925 open jobs
|
| 319 |
+
Analyst jobs
|
| 320 |
+
694,057 open jobs
|
| 321 |
+
Human Resources Manager jobs
|
| 322 |
+
31,339 open jobs
|
| 323 |
+
Software Engineer jobs
|
| 324 |
+
300,699 open jobs
|
| 325 |
+
Head jobs
|
| 326 |
+
1,018,536 open jobs
|
| 327 |
+
Head of Sales jobs
|
| 328 |
+
12,761 open jobs
|
| 329 |
+
Show more jobs like this
|
| 330 |
+
Funding
|
| 331 |
+
Stellar Development Foundation 1 total round
|
| 332 |
+
|
| 333 |
+
Last Round
|
| 334 |
+
|
| 335 |
+
Seed Sep 1, 2014
|
| 336 |
+
|
| 337 |
+
US$ 3.0M
|
| 338 |
+
|
| 339 |
+
Investors
|
| 340 |
+
|
| 341 |
+
Stripe
|
| 342 |
+
See more info on crunchbase
|
| 343 |
+
More searches
|
| 344 |
+
LinkedIn
|
| 345 |
+
© 2026
|
| 346 |
+
About
|
| 347 |
+
Accessibility
|
| 348 |
+
User Agreement
|
| 349 |
+
Privacy Policy
|
| 350 |
+
Your California Privacy Choices
|
| 351 |
+
Cookie Policy
|
| 352 |
+
Copyright Policy
|
| 353 |
+
Brand Policy
|
| 354 |
+
Guest Controls
|
| 355 |
+
Community Guidelines
|
| 356 |
+
Language
|
| 357 |
+
Sign in to see who you already know at Stellar Development Foundation
|
| 358 |
+
Sign in with Email
|
| 359 |
+
|
| 360 |
+
or
|
| 361 |
+
|
| 362 |
+
New to LinkedIn? Join now
|
| 363 |
+
|
| 364 |
+
By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.
|
demo-output/2-linkedin-without.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== Normal HTTP Fetch: linkedin.com/company/stellar-development-foundation ===
|
| 2 |
+
Command: curl https://www.linkedin.com/company/stellar-development-foundation
|
| 3 |
+
|
| 4 |
+
window.onload = function() { // Parse the tracking code from cookies. var trk = "bf"; var trkInfo = "bf"; var cookies = document.cookie.split("; "); for (var i = 0; i 8)) { trk = cookies[i].substring(8); } else if ((cookies[i].indexOf("trkInfo=") == 0) && (cookies[i].length > 8)) { trkInfo = cookies[i].substring(8); } } if (window.location.protocol == "http:") { // If "sl" cookie is set, redirect to https. for (var i = 0; i 3)) { window.location.href = "https:" + window.location.href.substring(w
|
| 5 |
+
|
| 6 |
+
--- Total HTML size: 1530 bytes
|
| 7 |
+
--- Visible text: 1151 chars
|
| 8 |
+
--- Company description: not available
|
| 9 |
+
--- Employee count: not available
|
| 10 |
+
--- No public API exists for LinkedIn
|
demo-output/3-soroswap-with.txt
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== RenderGate: https://soroswap.finance ===
|
| 2 |
+
Payment: $0.001 USDC on stellar:testnet
|
| 3 |
+
Render time: 3240ms
|
| 4 |
+
|
| 5 |
+
Title: Soroswap - The First DEX Aggregator on Stellar
|
| 6 |
+
Description: Soroswap is the first DEX aggregator on Stellar. Swap tokens at the best prices, provide liquidity, and access DeFi on Soroban with fast, low-cost transactions.
|
| 7 |
+
|
| 8 |
+
Headings (26):
|
| 9 |
+
H1: Your gateway to Stellar's financial ecosystem
|
| 10 |
+
H2: Powering the projects you already use
|
| 11 |
+
H2: Four DEXs. One call.
|
| 12 |
+
H3: Soroswap AMM
|
| 13 |
+
H3: Aquarius
|
| 14 |
+
H3: Phoenix
|
| 15 |
+
H3: Stellar Classic
|
| 16 |
+
H2: One API. Best quotes on Stellar.
|
| 17 |
+
H3: Plug-and-Play REST API
|
| 18 |
+
H3: Optimized Aggregated Routing
|
| 19 |
+
H3: Smooth Integration
|
| 20 |
+
H3: Gasless Trustlines
|
| 21 |
+
H2: Built by devs who've been in your shoes
|
| 22 |
+
H3: Documentation
|
| 23 |
+
H3: Open Source
|
| 24 |
+
|
| 25 |
+
Links (30):
|
| 26 |
+
Home → https://soroswap.finance/#home
|
| 27 |
+
API → https://soroswap.finance/#features
|
| 28 |
+
App → https://soroswap.finance/#app
|
| 29 |
+
Developers → https://soroswap.finance/#developers
|
| 30 |
+
FAQ → https://soroswap.finance/#faq
|
| 31 |
+
Explore → https://info.soroswap.finance/
|
| 32 |
+
Contact → https://soroswap.finance/#contact
|
| 33 |
+
Launch App → https://app.soroswap.finance/
|
| 34 |
+
Get API Access → https://docs.soroswap.finance/soroswap-api#api-access
|
| 35 |
+
Read the docs → https://docs.soroswap.finance/
|
| 36 |
+
Sell
|
| 37 |
+
0
|
| 38 |
+
XLM → https://app.soroswap.finance/
|
| 39 |
+
Buy
|
| 40 |
+
0
|
| 41 |
+
USDC → https://app.soroswap.finance/
|
| 42 |
+
Launch App → https://app.soroswap.finance/
|
| 43 |
+
Read the docs → https://docs.soroswap.finance/
|
| 44 |
+
View on GitHub → https://github.com/soroswap
|
| 45 |
+
|
| 46 |
+
Content (5861 chars):
|
| 47 |
+
Home
|
| 48 |
+
API
|
| 49 |
+
App
|
| 50 |
+
Developers
|
| 51 |
+
FAQ
|
| 52 |
+
Explore
|
| 53 |
+
Contact
|
| 54 |
+
Launch App
|
| 55 |
+
FIRST STELLAR AGGREGATOR
|
| 56 |
+
Your gateway to Stellar's financial ecosystem
|
| 57 |
+
|
| 58 |
+
One API. All DEXs and AMMs in one place. Gasless onboarding. The infrastructure that powers Stellar's top projects.
|
| 59 |
+
|
| 60 |
+
Get API Access
|
| 61 |
+
Read the docs
|
| 62 |
+
Swap
|
| 63 |
+
Sell
|
| 64 |
+
0
|
| 65 |
+
XLM
|
| 66 |
+
Buy
|
| 67 |
+
0
|
| 68 |
+
USDC
|
| 69 |
+
1 XLM = 0.237367 USDC
|
| 70 |
+
Launch App
|
| 71 |
+
Powering the projects you already use
|
| 72 |
+
|
| 73 |
+
These teams chose Soroswap to deliver better prices and smoother UX to their users while monetizing user swaps.
|
| 74 |
+
|
| 75 |
+
AGGREGATED LIQUIDITY
|
| 76 |
+
Four DEXs. One call.
|
| 77 |
+
|
| 78 |
+
We aggregate liquidity from every major source on Stellar so your users always get competitive rates.
|
| 79 |
+
|
| 80 |
+
Soroswap AMM
|
| 81 |
+
|
| 82 |
+
Stellar AMM
|
| 83 |
+
|
| 84 |
+
Live
|
| 85 |
+
Aquarius
|
| 86 |
+
|
| 87 |
+
Stellar AMM
|
| 88 |
+
|
| 89 |
+
Live
|
| 90 |
+
Phoenix
|
| 91 |
+
|
| 92 |
+
Stellar AMM
|
| 93 |
+
|
| 94 |
+
Live
|
| 95 |
+
Stellar Classic
|
| 96 |
+
|
| 97 |
+
The original SDEX
|
| 98 |
+
|
| 99 |
+
Live
|
| 100 |
+
|
| 101 |
+
More liquidity sources = tighter spreads = happier users.
|
| 102 |
+
|
| 103 |
+
We're continuously adding new pools. Your integration benefits automatically.
|
| 104 |
+
|
| 105 |
+
THE SOROSWAP API
|
| 106 |
+
One API. Best quotes on Stellar.
|
| 107 |
+
|
| 108 |
+
The only integration you need to access aggregated liquidity across all Stellar DEXs.
|
| 109 |
+
|
| 110 |
+
Plug-and-Play REST API
|
| 111 |
+
|
| 112 |
+
REST endpoints for everything
|
| 113 |
+
|
| 114 |
+
Not using TypeScript? No problem. Our REST API works with any stack. Get quotes, execute swaps, check pool states—all with simple HTTP calls.
|
| 115 |
+
|
| 116 |
+
Comprehensive docs. Testnet sandbox. Production-ready.
|
| 117 |
+
|
| 118 |
+
Optimized Aggregated Routing
|
| 119 |
+
|
| 120 |
+
Best price. Every time.
|
| 121 |
+
|
| 122 |
+
Our routing engine queries Aqua, Phoenix, Soroswap AMM, and Stellar Classic DEX in real-time. It splits orders across pools when that gets your users a better rate.
|
| 123 |
+
|
| 124 |
+
You call one endpoint. We handle the optimization.
|
| 125 |
+
|
| 126 |
+
Smooth Integration
|
| 127 |
+
|
| 128 |
+
From zero to production, fast
|
| 129 |
+
|
| 130 |
+
No weeks of integration work. No blockchain expertise required on your team. Our API and TypeScript SDK handle transaction building, signing flows, and error states.
|
| 131 |
+
|
| 132 |
+
Your first swap can be live today.
|
| 133 |
+
|
| 134 |
+
Gasless Trustlines
|
| 135 |
+
|
| 136 |
+
Trustlines without the friction
|
| 137 |
+
|
| 138 |
+
Your users shouldn't need to understand Stellar's trustline system to start trading. Our gasless trustline feature handles the complexity behind the scenes.
|
| 139 |
+
|
| 140 |
+
New user? First swap? No problem. They trade immediately.
|
| 141 |
+
|
| 142 |
+
DEVELOPER EXPERIENCE
|
| 143 |
+
Built by devs who've been in your shoes
|
| 144 |
+
|
| 145 |
+
We know what good DX feels like. That's what we built.
|
| 146 |
+
|
| 147 |
+
Documentation
|
| 148 |
+
|
| 149 |
+
Comprehensive guides, API references, and tutorials. Copy-paste examples that actually work.
|
| 150 |
+
|
| 151 |
+
Read the docs
|
| 152 |
+
Open Source
|
| 153 |
+
|
| 154 |
+
Our SDK, smart contracts, and routing algorithms are open source. Audit the code, fork it, contribute.
|
| 155 |
+
|
| 156 |
+
View on GitHub
|
| 157 |
+
Support
|
| 158 |
+
|
| 159 |
+
Stuck on something? Our team responds in Discord. Real engineers, real answers, usually within hours.
|
| 160 |
+
|
| 161 |
+
Join Discord
|
| 162 |
+
ECOSYSTEM
|
| 163 |
+
Building Stellar's DeFi infrastructure together
|
| 164 |
+
|
| 165 |
+
Soroswap isn't a standalone product; it's infrastructure. We collaborate with the teams building Stellar's DeFi future because better coordination means better outcomes for everyone.
|
| 166 |
+
|
| 167 |
+
DeFindex
|
| 168 |
+
|
| 169 |
+
Yield vault infrastructure for Soroswap Earn
|
| 170 |
+
|
| 171 |
+
Aquarius
|
| 172 |
+
|
| 173 |
+
Liquidity aggregation partner
|
| 174 |
+
|
| 175 |
+
Phoenix
|
| 176 |
+
|
| 177 |
+
Liquidity aggregation partner
|
| 178 |
+
|
| 179 |
+
Stellar Development Foundation
|
| 180 |
+
|
| 181 |
+
Ecosystem support and grants
|
| 182 |
+
|
| 183 |
+
Stronger together
|
| 184 |
+
DISCOVER OUR APP
|
| 185 |
+
Everything you need for DeFi on Stellar
|
| 186 |
+
API
|
| 187 |
+
Swap
|
| 188 |
+
Earn
|
| 189 |
+
Bridge
|
| 190 |
+
Pools
|
| 191 |
+
Soroswap API
|
| 192 |
+
|
| 193 |
+
Access aggregated liquidity from all major Stellar DEXs through a single, developer-friendly API. Get the best quotes, execute swaps, and build powerful DeFi applications.
|
| 194 |
+
|
| 195 |
+
One endpoint for all your swap needs.
|
| 196 |
+
|
| 197 |
+
Get API Access
|
| 198 |
+
The numbers
|
| 199 |
+
$52.2M+
|
| 200 |
+
Total Volume Routed
|
| 201 |
+
$12K+
|
| 202 |
+
Volume 24h
|
| 203 |
+
3K+
|
| 204 |
+
Total Accounts
|
| 205 |
+
|
| 206 |
+
Real-time metrics from mainnet
|
| 207 |
+
|
| 208 |
+
Ready to unlock swaps in your app?
|
| 209 |
+
|
| 210 |
+
Talk to our team. We'll walk you through the integration and answer your technical questions.
|
| 211 |
+
|
| 212 |
+
Work email
|
| 213 |
+
Project name
|
| 214 |
+
What are you building?
|
| 215 |
+
Select an option
|
| 216 |
+
Cross-chain Aggregator
|
| 217 |
+
Wallet
|
| 218 |
+
Exchange
|
| 219 |
+
dApp
|
| 220 |
+
Other
|
| 221 |
+
Book a call
|
| 222 |
+
|
| 223 |
+
Prefer to explore on your own?
|
| 224 |
+
|
| 225 |
+
Get API key
|
| 226 |
+
Join our Discord
|
| 227 |
+
|
| 228 |
+
No sales pitch. Just a technical conversation about your use case.
|
| 229 |
+
|
| 230 |
+
FAQ
|
| 231 |
+
Frequently asked questions
|
| 232 |
+
What is Soroswap?
|
| 233 |
+
|
| 234 |
+
Soroswap is DeFi infrastructure for Stellar. We provide a liquidity aggregation API that connects your application to multiple DEXs (Aquarius, Phoenix, Soroswap AMM, and Stellar Classic DEX), plus yield strategies through Soroswap Earn. You can also try our technology directly at app.soroswap.finance.
|
| 235 |
+
|
| 236 |
+
How does the API pricing work?
|
| 237 |
+
|
| 238 |
+
We offer a free tier with 1 request per second (RPS) to get started. For higher volume, we have Pro and Pro II plans. Additionally, if you enable swap commissions, a percentage goes to Soroswap as revenue share; this way, you can monetize swaps while supporting the protocol.
|
| 239 |
+
|
| 240 |
+
Which projects are already using Soroswap?
|
| 241 |
+
|
| 242 |
+
Hot Wallet, Sodax, Decaf, and Socket.fi use our infrastructure to power swaps for their users.
|
| 243 |
+
|
| 244 |
+
How long does integration take?
|
| 245 |
+
|
| 246 |
+
Most teams have basic swaps working within a few hours. A production-ready integration typically takes 1-2 days. We provide a TypeScript SDK, REST API, comprehensive docs, and direct support.
|
| 247 |
+
|
| 248 |
+
What's the difference between using Soroswap directly vs the API?
|
| 249 |
+
|
| 250 |
+
The Soroswap web app at app.soroswap.finance is for end users who want to swap tokens directly. The API is for developers building wallets, exchanges, or dApps who want to offer swap functionality to their own users.
|
| 251 |
+
|
| 252 |
+
Do you support cross-chain bridging?
|
| 253 |
+
|
| 254 |
+
Yes! We support bridging through our integration with Rozo Pay. This allows users to bridge assets from other chains into Stellar seamlessly, expanding the reach of your application.
|
| 255 |
+
|
| 256 |
+
How does Soroswap Earn work?
|
| 257 |
+
|
| 258 |
+
Soroswap Earn integrates with Defindex to provide automated yield strategies. Users deposit assets into vaults, and the strategies optimize returns automatically. As a developer, you can offer these yield products to your users through our API.
|
| 259 |
+
|
| 260 |
+
Still have questions? Ask us on Discord
|
| 261 |
+
|
| 262 |
+
Stellar's Liquidity Layer
|
| 263 |
+
|
| 264 |
+
Home
|
| 265 |
+
API
|
| 266 |
+
Liquidity
|
| 267 |
+
App
|
| 268 |
+
Developers
|
| 269 |
+
Partners
|
| 270 |
+
FAQ
|
| 271 |
+
Terms of Use
|
| 272 |
+
Privacy Policy
|
| 273 |
+
|
| 274 |
+
© 2026 PaltaLabs. All rights reserved.
|
demo-output/3-soroswap-without.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== Normal HTTP Fetch: soroswap.finance ===
|
| 2 |
+
Command: curl https://soroswap.finance
|
| 3 |
+
|
| 4 |
+
Soroswap - The First DEX Aggregator on Stellar { "@context": "https://schema.org", "@type": "Organization", "name": "Soroswap", "alternateName": ["Soroswap Finance", "Soroswap DEX"], "url": "https://soroswap.finance", "logo": "https://soroswap.finance/logo512.png", "description": "Soroswap is the first DEX aggregator on Stellar blockchain, enabling token swaps at the best prices across multiple DEXs including Soroswap AMM, Aquarius, Phoenix, and Stellar Classic DEX.", "foundingDate": "2023", "fo
|
| 5 |
+
|
| 6 |
+
--- Total HTML size: 6947 bytes
|
| 7 |
+
--- Visible text: 3933 chars
|
| 8 |
+
--- DEX data: not available
|
| 9 |
+
--- No API exists for Soroswap UI content
|
demo-output/4-producthunt-with.txt
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== RenderGate: https://www.producthunt.com ===
|
| 2 |
+
Payment: $0.001 USDC on stellar:testnet
|
| 3 |
+
Render time: 2896ms
|
| 4 |
+
|
| 5 |
+
Title: Just a moment...
|
| 6 |
+
|
| 7 |
+
Headings (3):
|
| 8 |
+
H1: www.producthunt.com
|
| 9 |
+
H2: Performing security verification
|
| 10 |
+
H2: Verification successful. Waiting for www.producthunt.com to respond
|
| 11 |
+
|
| 12 |
+
Links (2):
|
| 13 |
+
Cloudflare → https://www.cloudflare.com/?utm_source=challenge&utm_campaign=m
|
| 14 |
+
Privacy → https://www.cloudflare.com/privacypolicy/
|
| 15 |
+
|
| 16 |
+
*** AUTO-REFUND ***
|
| 17 |
+
Reason: blocked_page
|
| 18 |
+
Refund amount: 0.001 USDC
|
| 19 |
+
Refund transaction: 2d91f45b09e684c0096bf19eb5482858e7074b3bc143768626daaeb101a94557
|
| 20 |
+
Verify: https://stellar.expert/explorer/testnet/tx/2d91f45b09e684c0096bf19eb5482858e7074b3bc143768626daaeb101a94557
|
| 21 |
+
|
| 22 |
+
Content (266 chars):
|
| 23 |
+
www.producthunt.com
|
| 24 |
+
Performing security verification
|
| 25 |
+
|
| 26 |
+
This website uses a security service to protect against malicious bots. This page is displayed while the website verifies you are not a bot.
|
| 27 |
+
|
| 28 |
+
Ray ID: 9eba8a361b3fa13a
|
| 29 |
+
Performance and Security by CloudflarePrivacy
|
demo-output/4-producthunt-without.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== Normal HTTP Fetch: producthunt.com ===
|
| 2 |
+
Command: curl https://www.producthunt.com
|
| 3 |
+
|
| 4 |
+
Just a moment... *{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width Enable JavaScript and cookies
|
| 5 |
+
|
| 6 |
+
--- Total HTML size: 4612 bytes
|
| 7 |
+
--- Visible text: 3323 chars
|
| 8 |
+
--- Cloudflare blocked: yes
|
save-demo.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import "dotenv/config";
|
| 2 |
+
import { writeFileSync } from "fs";
|
| 3 |
+
import { Transaction, TransactionBuilder } from "@stellar/stellar-sdk";
|
| 4 |
+
import { x402Client, x402HTTPClient } from "@x402/fetch";
|
| 5 |
+
import { createEd25519Signer, getNetworkPassphrase } from "@x402/stellar";
|
| 6 |
+
import { ExactStellarScheme } from "@x402/stellar/exact/client";
|
| 7 |
+
|
| 8 |
+
const SERVER_URL = process.env.SERVER_URL || "https://tantk-rendergate.hf.space";
|
| 9 |
+
const NETWORK = "stellar:testnet";
|
| 10 |
+
|
| 11 |
+
const signer = createEd25519Signer(process.env.STELLAR_PRIVATE_KEY, NETWORK);
|
| 12 |
+
const client = new x402Client().register(
|
| 13 |
+
"stellar:*",
|
| 14 |
+
new ExactStellarScheme(signer, { url: "https://soroban-testnet.stellar.org" }),
|
| 15 |
+
);
|
| 16 |
+
const httpClient = new x402HTTPClient(client);
|
| 17 |
+
|
| 18 |
+
async function paidRender(targetUrl) {
|
| 19 |
+
const endpoint = `${SERVER_URL}/render?url=${encodeURIComponent(targetUrl)}`;
|
| 20 |
+
const r1 = await fetch(endpoint);
|
| 21 |
+
if (r1.status !== 402) return await r1.json();
|
| 22 |
+
|
| 23 |
+
const pr = httpClient.getPaymentRequiredResponse((n) => r1.headers.get(n));
|
| 24 |
+
let pp = await client.createPaymentPayload(pr);
|
| 25 |
+
const np = getNetworkPassphrase(NETWORK);
|
| 26 |
+
const tx = new Transaction(pp.payload.transaction, np);
|
| 27 |
+
const sd = tx.toEnvelope().v1()?.tx()?.ext()?.sorobanData();
|
| 28 |
+
if (sd) {
|
| 29 |
+
pp = {
|
| 30 |
+
...pp,
|
| 31 |
+
payload: {
|
| 32 |
+
...pp.payload,
|
| 33 |
+
transaction: TransactionBuilder.cloneFrom(tx, {
|
| 34 |
+
fee: "1", sorobanData: sd, networkPassphrase: np,
|
| 35 |
+
}).build().toXDR(),
|
| 36 |
+
},
|
| 37 |
+
};
|
| 38 |
+
}
|
| 39 |
+
const headers = httpClient.encodePaymentSignatureHeader(pp);
|
| 40 |
+
const r2 = await fetch(endpoint, { headers });
|
| 41 |
+
return await r2.json();
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
function formatOutput(data, targetUrl) {
|
| 45 |
+
let out = `=== RenderGate: ${targetUrl} ===\n`;
|
| 46 |
+
out += `Payment: ${data.payment?.price} USDC on ${data.payment?.network}\n`;
|
| 47 |
+
out += `Render time: ${data.renderTimeMs}ms\n\n`;
|
| 48 |
+
|
| 49 |
+
out += `Title: ${data.title}\n`;
|
| 50 |
+
if (data.description) out += `Description: ${data.description}\n`;
|
| 51 |
+
out += `\n`;
|
| 52 |
+
|
| 53 |
+
if (data.headings?.length > 0) {
|
| 54 |
+
out += `Headings (${data.headings.length}):\n`;
|
| 55 |
+
data.headings.slice(0, 15).forEach((h) => {
|
| 56 |
+
out += ` ${h.level}: ${h.text}\n`;
|
| 57 |
+
});
|
| 58 |
+
out += `\n`;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
if (data.links?.length > 0) {
|
| 62 |
+
out += `Links (${data.links.length}):\n`;
|
| 63 |
+
data.links.slice(0, 15).forEach((l) => {
|
| 64 |
+
out += ` ${l.text.substring(0, 50)} → ${l.href}\n`;
|
| 65 |
+
});
|
| 66 |
+
out += `\n`;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
if (data.refund) {
|
| 70 |
+
out += `*** AUTO-REFUND ***\n`;
|
| 71 |
+
out += `Reason: ${data.refund.reason}\n`;
|
| 72 |
+
out += `Refund amount: ${data.refund.amount}\n`;
|
| 73 |
+
out += `Refund transaction: ${data.refund.transaction}\n`;
|
| 74 |
+
out += `Verify: https://stellar.expert/explorer/testnet/tx/${data.refund.transaction}\n\n`;
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
out += `Content (${data.content?.length} chars):\n`;
|
| 78 |
+
out += data.content || "(empty)";
|
| 79 |
+
return out;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
const sites = [
|
| 83 |
+
{ name: "1-twitter", url: "https://x.com/stellarorg" },
|
| 84 |
+
{ name: "2-linkedin", url: "https://www.linkedin.com/company/stellar-development-foundation" },
|
| 85 |
+
{ name: "3-soroswap", url: "https://soroswap.finance" },
|
| 86 |
+
{ name: "4-producthunt", url: "https://www.producthunt.com" },
|
| 87 |
+
];
|
| 88 |
+
|
| 89 |
+
for (const site of sites) {
|
| 90 |
+
console.log(`Rendering ${site.name}...`);
|
| 91 |
+
try {
|
| 92 |
+
const data = await paidRender(site.url);
|
| 93 |
+
const output = formatOutput(data, site.url);
|
| 94 |
+
const path = `demo-output/${site.name}-with.txt`;
|
| 95 |
+
writeFileSync(path, output);
|
| 96 |
+
console.log(` Saved: ${path} (${data.content?.length} chars, refund: ${!!data.refund})`);
|
| 97 |
+
} catch (err) {
|
| 98 |
+
console.error(` Failed: ${err.message}`);
|
| 99 |
+
}
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
console.log("Done!");
|
server.js
CHANGED
|
@@ -25,6 +25,7 @@ function isAllowedUrl(urlStr) {
|
|
| 25 |
if (!["http:", "https:"].includes(parsed.protocol)) return false;
|
| 26 |
const blocked = ["localhost", "127.0.0.1", "0.0.0.0", "[::1]"];
|
| 27 |
if (blocked.includes(parsed.hostname)) return false;
|
|
|
|
| 28 |
const parts = parsed.hostname.split(".");
|
| 29 |
if (parts[0] === "10") return false;
|
| 30 |
if (parts[0] === "172" && +parts[1] >= 16 && +parts[1] <= 31) return false;
|
|
@@ -174,9 +175,11 @@ const server = app.listen(Number(PORT), () => {
|
|
| 174 |
console.log(` Payments go to ${PAY_TO}`);
|
| 175 |
});
|
| 176 |
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
|
|
|
|
|
|
|
|
| 25 |
if (!["http:", "https:"].includes(parsed.protocol)) return false;
|
| 26 |
const blocked = ["localhost", "127.0.0.1", "0.0.0.0", "[::1]"];
|
| 27 |
if (blocked.includes(parsed.hostname)) return false;
|
| 28 |
+
if (parsed.hostname.startsWith("[")) return false; // block all IPv6 literals
|
| 29 |
const parts = parsed.hostname.split(".");
|
| 30 |
if (parts[0] === "10") return false;
|
| 31 |
if (parts[0] === "172" && +parts[1] >= 16 && +parts[1] <= 31) return false;
|
|
|
|
| 175 |
console.log(` Payments go to ${PAY_TO}`);
|
| 176 |
});
|
| 177 |
|
| 178 |
+
for (const sig of ["SIGTERM", "SIGINT"]) {
|
| 179 |
+
process.on(sig, async () => {
|
| 180 |
+
console.log(`${sig} received, shutting down...`);
|
| 181 |
+
server.close();
|
| 182 |
+
await closeBrowser();
|
| 183 |
+
process.exit(0);
|
| 184 |
+
});
|
| 185 |
+
}
|