您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python怎么實現一個手機號碼獲取妹子名字的功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
1.目標場景
不知道你有沒有經歷過這樣一個場景,好不容易拿到一個妹子的手機號,但是又不好意思去搭訕,問一下對方的名字。
有過社工科經驗的人應該都知道,拿到一個人的手機號碼后,其他信息都可以很容易獲取到,除了花錢之外,利用支付寶的「模擬轉賬」方式,可以非常方便的拿到對方的全名。
下面我們用 Python 實現一個手機號碼獲取妹子名字的功能。
2.編寫代碼
首先,我們需要爬取國內最常用的一些姓氏,以百度百科 - 中國姓氏為例。
使用 xpath + requests 可以非常方便地爬取數據。
需要注意的是,必須設置「請求頭」,保證數據能正常的爬取下來。
headers = { 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-User': '?1', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 'Sec-Fetch-Site': 'none', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', } def __get_common_family_names(self): """ 爬取常用的姓氏 :return: """ resp_text = requests.get(family_name_url, headers=headers).content # print(resp_text) htmlElement = etree.HTML(text=resp_text) # 500多個常見姓氏 names_pre = htmlElement.xpath("//table[@log-set-param='table_view']//tr//td/a/text()") # 過濾復姓 names = list(filter(self.__get_avai_name, names_pre)) print(f'常見姓氏:{len(names)}種') return names
拿到常見的姓氏數據后,接著就使用自動化工具 Airtest 模擬打開支付寶 App,并一步步地跳轉到轉賬界面
def __open_app(self): """ 打開轉賬界面 :return: """ home() print('打開支付寶') stop_app(self.package_name_aliply) start_my_app(self.package_name_aliply, self.target_activity_name) # 轉賬 self.poco('com.alipay.android.phone.openplatform:id/app_text', text=u'轉賬').click() # 轉賬到支付寶 self.poco('com.alipay.mobile.transferapp:id/to_account_view_tv', text=u'轉到支付寶').click() # 輸入賬號 self.poco('com.alipay.mobile.antui:id/input_edit').set_text(self.account) # 點擊下一步 self.poco('com.alipay.mobile.transferapp:id/tf_toAccountNextBtn').click()
需要注意的是,像 Flyme 等系統為了防止信息泄露,支付寶應用內是關閉調試模式的,也就是沒法利用 adb 連接不上設備。
這里只需「臨時關閉保護功能」即可。
如果是非好友關系,轉賬界面對方顯示的名字不完全,可以點擊「驗證按鈕」,輸入對方的姓氏就能進行確認。
所以,可以遍歷上面獲取到的姓氏,一個個地去驗證。
def __simulate_transfer(self, last_name): """ 模擬轉賬 :return: """ # 如果不是好友,就不會顯示全名 # 點擊驗證名稱 verify_element = self.poco('com.alipay.mobile.transferapp:id/tf_receiveNameTextView') verify_element.click() # 姓名除去姓氏 first_name_pre = verify_element.get_text() # 獲取真實的first name self.first_name = first_name_pre[:first_name_pre.index('(')] # 獲取姓氏輸入框 input_element = self.poco('com.alipay.mobile.antui:id/dialog_custom_view').parent().children()[1].children()[0] input_element.set_text(last_name) # 點擊確認按鈕,開始驗證 self.poco('com.alipay.mobile.antui:id/ensure').click()
另外,轉賬頁面可以先利用界面元素拿到妹子不包含姓氏的名字。
如果輸入的姓氏不正確,則會彈出警告對話框,否則就能拿到妹子的姓氏了。
def __judge_family_name(self): """ 判斷姓氏輸入是否正確 :return: """ msg_error = self.poco('com.alipay.mobile.antui:id/message', text=u'姓名和賬戶不匹配,為避免轉錯賬,請核對') btn_ensure = self.poco('com.alipay.mobile.antui:id/ensure') yes_or_right = False # 姓氏不對 if msg_error.exists(): print('姓氏輸入不正確') btn_ensure.click() yes_or_right = False else: print('姓氏輸入正確') yes_or_right = True return yes_or_right
組合的上面獲取到的數據,就能得到妹子完整的名字啦。
關于“Python怎么實現一個手機號碼獲取妹子名字的功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。