故事起因
講一個自己的故事,應網友的請求,幫他找一個人,這個人與他通過支付寶發生過金錢上的來往,後面可能是産生了什麼糾紛,具體原因我也不太清楚,他的請求就是:能不能通過支付寶上的轉賬記錄查詢到對方的手機号。
由于支付寶的隐私機制,如果對方的手機号不存在你的手機通訊錄中,你是看不到對方的完整手機号的,隻能看到前三位和後兩位,轉賬的時候能看到對方的頭像與昵稱數額比較大的時候還能知道對方的名字,但就是無法看到完整的11位的手機号
上面這段話,有個很重要的隐含條件,對方的手機号存在你的手機通訊錄中,那我就可以通過支付寶看到他完整的号碼!
這就激起了我的興趣,覺得可以試試,因為思路就是圍繞上面那個機制,問題就将簡化成将所有可能的号碼添加到我的手機通訊錄。
如何找到所有可能的号碼呢?簡單粗暴的就是把中間預設的6位數字用排列組合的形式全部列出來,但凡學過點排列組合的人都知道,6位數,每位數都有0-9的十種可能,一共就有10的6次方,也就是一百萬種……即使能列出來,手機也得炸了吧,有這麼大容量存儲100萬條号碼嗎?
問題就變成了盡可能的縮小範圍,不說太細,怕被别有用心的人利用。
然後就是利用代碼将全部可能的号碼生成出來,問題就變成了如何将生成的手機号導入手機,這是另一個問題,我還是用代碼解決的,也不說太細,怕被别有用心的人利用。
結果就是,最終我幫他找到了。
但我要說的是另外兩件事情:
解決問題的通用思路:
當你面對問題時,最先一定要聚焦于最終的結果,圍繞最終結果提出解決方案,能提出解決方案,說明理論上這個問題是有解的,否則就沒有可行性;然後再圍繞解決方案逐漸将問題解剖,把事務分解成最基本的組成,利用各種方法,解決分解的過程中的每一個問題,案例中的最終結果是通過支付寶找到某人的号碼,解決方案就是利用支付寶的手機通訊錄能加好友的機制,問題就變成了将對方的号碼添加到通訊錄,添加的前提是要拿到号碼,拿到号碼的解決方案是暴力周遊,但經過分析暴力周遊結果過多,幾乎沒有可行性,問題就變成了如何減少周遊結果,這個問題的解決方案就是*****************縮小範圍,這個方案優化後可以執行,利用代碼三下兩下就搞定,得到了一堆号碼,問題又出現了,怎麼将成千上萬的号碼快速導入手機呢?圍繞這個問題再去思考、尋求解決方案,總之,在這樣的思想指導下,你一定能慢慢的接近最終的目标。
技術濫用的後果
最終我幫助那個人實作了目的,本想将這個完整的過程記錄下來分享給所有人,但有想到,如果這個解決方案被别有用心的人利用了,那豈不是為虎作伥、助纣為虐,這就回到了老生常談的問題,技術無罪人有罪,任何技術都是中性的,用來幹什麼取決于人,天使可以用來建立天堂,魔鬼可以用來制造夢魇。