Cuộc sống o trọc này đã quá đủ chán nản với tôi rồi, vậy mà bài tôi viết ra vẫn bị downvote (dù nó đáng lẻ nên như thế). Nhưng điều làm cho tôi có hứng thú để đi rình mò xong rồi đẻ ra được nội dung của bài viết này lại đến từ một thứ khác. Đó chính là phần thông báo của Spiderum.

Một chiếc thông báo kỳ lạ

Thông thường không biết mọi người sẽ nhận ra việc bài mình bị downvote qua cách nào nhỉ? Trong đó tôi nghĩ sẽ có một cách đơn giản là nhìn thấy lượt upvote bị giảm xuống. Nhưng đó là cách khi mà chúng ta rãnh rỗi ngồi ngó thông báo cũng như theo dõi số lượng up cũng như down vote liên tục. Tôi thì lười, rất chi là lười nên không thử cách đó được. Dù rằng cũng có lần được thấy hiện tượng tuột giảm downvote nhưng nhìn chung cũng không nhiều. Do vậy nên tôi dùng một cách khác để nghía xem bài mình bị downvote bao nhiêu đó là dựa vào thông báo. Như mọi người đều biết thì mỗi khi bài viết được upvote thì hệ thống Spiderum sẽ gửi về cho chúng ta một thông báo với mẫu nội dung là "<Ai đó> và <n> người khác đã upvote bài viết <...> của bạn".
Dựa trên mẫu thông báo đó thì chúng ta có thể làm một phép tính đơn giản để tính ra số người đã downvote các bài viết của mình như sau:
Số người downvote = Số người upvote - số upvote được hiển thị
Nhìn chung thì công thức này đơn giản và khá tường minh. Do vậy mà tôi lấy làm tin tưởng lắm. Hý hửng áp dụng vào bài viết của chính mình. Theo thông báo mà tôi nhận được lúc đó thì tôi có hai người cộng với 32 người khác đã upvote cho tôi. Có nghĩa có tổng cộng là 34 người bạn thiện lành đã ra tay mà nhấn vào cái nút mũi tên chĩa ngược lên. Tìm theo tôi hý hửng trở về bài viết của mình thì tôi chợt nhận ra số upvote đang được hiển thị của mình là 30. Bám theo công thức trên thì tôi có tận bốn lượt downvote... Quá chi là trầm cảm xen lẫn thất vọng. Tôi đi ra quán bia làm vài ly để quên đi nổi buồn to lớn đó...

Nghịch phá và lục lọi

Chưa bao giờ cồn là một lựa chọn tốt để giải quyết nổi buồn cả. Vì khi say người ta hay làm mấy điều dại dột. Tôi biết thế nhưng mà đau lòng quá, chán quá, buồn quá. Mà đã thế thì không uống không được. Trong lúc nốc bia ừng ực, tôi trở nên một kẻ đầy nghi ngờ thực tại. Trong sự nghi ngờ đó tôi quyết định níu kéo đôi chút niềm tin bằng việc nghía trộm thông tin bài viết của tôi được gửi về từ API xem có gì lạ lùng không. Lục lọi một hồi trong cơn say tôi cũng lụm được một đường dẫn API để lấy thông tin bài viết với dạng như sau:
https://spiderum.com/api/v1/post/<đường dẫn của bài viết>
Thế là tôi thử gõ vào trình duyệt xem nó trả về cái gì. Đây chính là một số thông tin tôi thó được từ API trên:
Bỏ qua những thông tin khó hiểu như cổ ngữ khác thì tôi nhìn thấy được ba thứ khá chi là quan trọng đó là "point", "up_point" và "down_point" hiển thị lần lượt là 30, 32 và 2. Nếu dựa theo công thức đơn giản ở trên thì mọi thứ khá hợp lý khi mà 32 - 2 = 30. Thế thì cái nào đúng và cái nào sai nhỉ? Số 34 đến từ thông báo và số 32 đến từ API? Rốt cuộc thì tôi bị ăn 4 hay là 2 downvote? Rối não quá nên tôi quyết định tìm cái API thông báo để ba mặt một lời. Từ đường dẫn spiderum.com/api/v2/notification/user tôi thó được một số thông tin về phần thông báo như sau:
Ngoài những phần thông tin tôi không hiểu gì thì trong đó có hai thành phần đáng chú ý đó là "interactive_users" và "populated_interactive_users". populated_interactive_users theo tôi đoán là một danh sách chứa các người dùng gần nhất đã upvote cho bài viết của tôi. Còn "interactive_users" là một danh sách gồm rất nhiều ID của các người dùng. Điều đặc biệt đó là danh sách này gồm có 34 phần tử tương đương với con số 34 mà tôi đã tính ra lúc đầu bài. Dựa vào con số này thì tôi đoán rằng con số "32 người khác" trong nội dung của phần thông báo được tính bằng công thức "Tổng interactive_users - 2". Thế rồi quay lại câu hỏi cũ là giữa 32 với 34 thì số nào đúng nhỉ? Trong cái lúc mà bia đưa lối, rượu đưa đường thì tôi chợt nghĩ rằng phải chăng số 34 ở trên là tổng danh sách những người downvote lẫn upvote? Mà nếu là thế thì cũng chẳng ăn thua vì dù tôi có biết được họ là ai thì làm sao mà tôi biết được 2 người nào trong số 34 người kia đã downvote bài viết của tôi? Thêm nửa thì làm sao để từ số ID mà lấy được thông tin của người dùng nhỉ?

Ngạc nhiên chưa

Con đường của tôi coi như đến đó là cụt hẳn rồi. Nhưng thôi dù sao thì thử tìm xem ai là người đã tương tác với bài viết của mình cũng được. Mà muốn tìm thì có lẻ cần phải có một API nào tìm cái đó dùm mình. Tôi đoán rằng mò vô trang hồ sơ người dùng kiểu gì cũng sẽ có một cái API dạng đó. Nhưng mà tôi lầm, lầm to luôn vì chẳng có API nào như thế cả, API lấy thông tin người dùng hoạt động dựa trên tên của người dùng thay vì là ID. Nhưng còn nước, còn tát, còn hy vọng thì tôi cứ tiếp tục tò mò thọc mạch tiếp xem có cách nào để khai thác thông tin người dùng dựa trên ID không. Nhưng không, không hề có luôn. Thất vọng quá nên tôi đành ngồi nhìn mấy cái cổ ngữ trong API trả về trong lúc nóc những phần bia cuối cùng.
Thì có gì đó làm tôi phải nheo mắt là như mấy tay cảnh sát già bất tài vô tướng trong mấy bộ phim nước ngoài. Chà chà, thấy được cả email, ngày sinh lẫn giới tính luôn à? Kể cả khi người dùng không muốn công khai chúng? Tôi tiếp tục thử thêm một thử nghiệm khác như là mở thử đường dẫn API này ở chế độ ẩn danh. Kết quả là API vẫn trả về đầy đủ các thông tin kể trên không hề sót cái nào cả. Tiếp đà hưng phấn này tôi kêu thêm một ly bia nửa và bắt đầu nghịch phá. Đầu tiên là nghịch thử mấy tài khoản nổi tiếng xem thế nào. Đương nhiên là lấy được hết ráo từ email, ngày sinh cho đến các thông tin khác của họ nếu họ có khai báo. Từ những thông tin như email, mạng xã hội thì bằng một cách nào đó nếu truy cập vào các kênh lưu trữ thứ ba thì hoàn toàn có khả năng lấy được những thông tin khác từ người dùng ở ngoài đời thật như tên họ...
Ngoài ra thì tôi cũng thử một API khác là API lấy danh sách bình luận của người dùng. Kết quả không khác mấy API lấy thông tin người dùng. Tôi có thể truy cập một cách trực tiếp để lấy thông tin mà không gặp khó khăn nào, mặc cho người dùng đó có muốn công khai bình luận hay không.
Một mặt nào đó dù không biết có người nào khai thác những thông tin đó hay không nhưng thật sự để lộ ra những thông tin (có thể không có nhu cầu sử dụng từ phía ứng dụng) người dùng như thế này không phải là một điều tốt. Đặc biệt là những thông tin có phần nhạy cảm như email và ngày sinh. Những thông tin kia hoàn toàn có thể kéo theo những hệ lụy đến đời sống thực của những người dùng đang muốn "ẩn danh" trên Spiderum.

Còn vụ ID thì sao?

Lúc này thì vụ lấy thông tin người dùng từ ID có vẻ không còn mấy quan trọng nửa. Nhưng bằng một cách wibu nào đó mà tôi cũng thó được một API có thể phục vụ việc đó. Trong lúc hy vọng dần cạn theo bia thì tôi vô tình vớ được một API trong phần trò chuyện có thể giúp tôi đạt được điều tôi muốn đó là spiderum.com/api/v1/chat/t/user?id=<user ID>. Kết quả của API đó hoàn toàn có thể giúp tôi lấy được các thông tin cơ bản như "name" và "display_name" của người dùng. Từ đó khai thác tiếp các API tiếp theo là sẽ lấy được thêm các thông tin khác.
Nhưng có vẻ giờ điều đó cũng chẳng còn nhiều lắm ý nghĩa.

Công cóc

Sau một chầu bia ngồi vò đầu thì mọi thứ trở về công cóc. Tôi chẳng thể xác định được ai downvote bài của mình. Đời bổng chóc chán vô cùng. Nhưng bù lại thì bia khá ngon.