Photobucket thu $5 để trả ảnh tuổi thơ - mở ra thì cái xô trống không
Tháng trước tôi xóa tài khoản Yahoo. Mất hai mươi phút trả lời câu hỏi bảo mật tự đặt hồi mười sáu tuổi, reset password gửi về email không còn mở nữa. Xong thì thấy mình “dọn dẹp cuộc đời” xong một mảng. Kiểu người lớn.
Đọc bài trên lutr.dev về Photobucket, tôi nhớ ra chắc mình cũng còn cái tài khoản kiểu vậy. Chưa dám mở.
Câu chuyện gói trong một câu
Một dev dọn dẹp tài khoản cũ, đăng nhập Photobucket để lấy ảnh thời đi diễn đàn, bị chặn trả $5/tháng với câu quảng cáo nghe như trả một lần là xong - cắn răng trả, vào trong thì bucket trống không.
Hết. Phần còn lại là chi tiết làm người ta vừa cười vừa tức.
Vì sao lên front page
Photobucket là bom hoài niệm. Ai từng post forum khoảng 2005–2012 thì avatar, screenshot, meme JPEG chắc từng nằm trên Photobucket. Upload xong lấy link dán vào bài - xong việc. Kiểu Imgur của một thời.
Rồi dịch vụ không “xong việc” cùng bạn.
Bài gốc mở đầu bằng cảnh quen thuộc: dọn tài khoản cũ. Ảnh trên Imgur lấy lại được hàng trăm tấm. Photobucket chắc còn lâu hơn, nhục hơn, đáng xấu hổ hơn.
Đăng nhập vào gặp dòng chữ kiểu đàm phán con tin:
You shared them. We protected them.
Bảo vệ khỏi cái gì? Có lẽ khỏi lòng tham của chính họ. Landing page ghi “sống lại kỷ niệm chỉ với $5” - đọc kỹ mới thấy là $5 mỗi tháng. Không phải tiền chuộc một lần. Là bẫy subscription bọc trong hoài niệm.
HN upvote không phải vì Photobucket mới. Họ làm kiểu này từ lâu rồi. Upvote vì setup quá quen: ai cũng từng có tài khoản kiểu đó, và punchline quá tàn.
Năm đô mua cái gì?
Chi tiết tôi nhớ nhất: lutr tranh đấu với lòng tự trọng xong vẫn trả. Nhập thẻ. Bấm qua vài bước. Vào được.
--> // making it invisible to querySelectorAll. // // `data-cfasync="false"` keeps this rescue script executable even when // Rocket Loader is active. It rescues module scripts via two strategies: // 1. Query the DOM for type$="-module" + src (covers case A) // 2. Regex-parse the raw HTML for commented-out script tags (covers case B) // Dynamically-created scripts bypass Rocket Loader entirely. (function () { if (window.__markdyRescue) return; window.__markdyRescue = true; var rescued = false; function rescueModuleScripts() { if (rescued) return; rescued = true; var srcs = []; // Strategy 1: Rocket Loader kept the tag in DOM but changed the type. // type="module" → type="{uuid}-module" (still has src attribute) document.querySelectorAll('script[type$="-module"][src]').forEach(function (s) { srcs.push(s.src); }); // Strategy 2: Rocket Loader COMMENTED OUT the script tag entirely: // // These are invisible to querySelectorAll, so we parse the raw HTML. // We handle both attribute orderings (type-first or src-first). var html = document.documentElement.innerHTML; var reSrcFirst = //g; var reTypeFirst = //g; var m; while ((m = reSrcFirst.exec(html)) !== null) { srcs.push(m[1]); } while ((m = reTypeFirst.exec(html)) !== null) { srcs.push(m[1]); } // Re-inject each found src as a real module script. // Deduplicate first, then inject. Dynamically-created scripts bypass // Rocket Loader entirely. Modules with the same URL are only executed // once by the browser (cached), so re-injecting already-running scripts // is safe. var seen = {}; srcs.forEach(function (src) { if (seen[src]) return; seen[src] = true; var fix = document.createElement('script'); fix.type = 'module'; fix.src = src; fix.setAttribute('data-cfasync', 'false'); document.head.appendChild(fix); }); } // Rescue when user clicks the placeholder (fallback if autoplay failed). document.addEventListener('click', function (e) { var t = e.target; if (t && typeof t.closest === 'function' && t.closest('.markdy-placeholder')) { rescueModuleScripts(); } }); // Rescue automatically after a short delay for autoplay. // Only fires if initAll() never ran (no data-markdy-init on any root). setTimeout(function () { if (document.querySelector('.markdy-root:not([data-markdy-init])')) { rescueModuleScripts(); } }, 1500); }());Dashboard hiện:
Start filling your bucket…
Trống. Không phải “đang xử lý”. Không phải “đang khôi phục”. Trống.
Photobucket vừa gợi ý ảnh đang chờ sau paywall - “You shared them. We protected them” - rồi vẫn thu tiền. Năm đô bay. Cuối bài còn thêm một nhát nữa: trang thanh toán có ghi chú refund ở chân trang. Đọc xong khi tiền đã trừ.
Tôi từng trả “thuế ngu” trên mạng: domain dự án quên, app ghi chú mua một năm mở hai lần. Cái này khác vì thứ họ bán là quá khứ của chính bạn.
HN đang cãi nhau chuyện gì
Hai phe, cả hai đều có lý.
Phe một: lừa đảo, có thể còn phạm luật. equinoxnemesis nói thẳng - bảo ảnh của bạn đang ở đó, thu tiền cho vào, mà account trống, đó là chuyện chargeback. Mấy người khác kể email Photobucket đe xóa account nếu không subscribe. Giận không phải vì trừu tượng. Giận vì “cầm ảnh forum làm con tin rồi nói dối về kho”.
Phe hai: tin cloud free từ đầu là sai. MarkusWandel nói câu khó nghe: coi mọi cloud storage miễn phí là tạm thời. hamburgererror hỏi sao lại để ảnh tuổi thơ trên web lạ. jadar gật - không ai lưu data free mãi mãi.
Comment hữu ích nhất có thể là của okramcivokram: nhận email Photobucket báo sắp xóa account, đăng nhập, bỏ qua subscription, tìm thấy chỗ download data khi đóng tài khoản. Free. Không mất $5. Đường của lutr không phải đường duy nhất - mà càng chứng minh dark pattern, không phải giảm tội.
Nên đọc / nên bỏ qua
| Nếu bạn… | Thì… |
|---|---|
| Từng có Photobucket thời diễn đàn | Đọc bản gốc - sẽ thấy mình trong đó, rồi hơi ớn |
| Vẫn còn ảnh hotlink chết khắp web cũ | Kiểm tra host có paywall trước khi cho là mất hẳn |
| Đang dọn tài khoản cũ năm nay | Tìm export/download trước khi bấm subscribe |
| Backup local từ lâu rồi | Bỏ qua - bạn thắng cuộc từ 2009 |
Bài học không phải “Photobucket xấu” - dù họ xấu thật. Là hosting free là vay, không phải két sắt. Bên cho vay đổi điều khoản, paywall kỷ niệm, hoặc phá sản - bản sống sót duy nhất là bản bạn thật sự giữ.
Tôi vẫn chưa biết Photobucket của mình còn gì không. Cũng chưa chắc muốn biết đủ để trả subscription. Ảnh Yahoo, nếu có, chắc đi cùng account vừa xóa.
Có lẽ thuế thật không phải $5/tháng. Là lúc lần lượt phát hiện internet thuở nhỏ chưa bao giờ giữ hộ bạn. Nó chỉ cầm giữ - đến khi hóa đơn tới.
Thảo luận trên Hacker News · Nguồn: lutr.dev · Đăng bởi lutr
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi đọc Hacker News mỗi ngày và kể lại những câu chuyện hay nhất ở đây — bằng tiếng Việt và tiếng Anh, cho người tò mò nhưng không có thời gian.