Python 实现一个手机号码获取妹子名字的功能


Posted in Python onSeptember 25, 2019

1.目标场景

不知道你有没有经历过这样一个场景,好不容易拿到一个妹子的手机号,但是又不好意思去搭讪,问一下对方的名字。

Python 实现一个手机号码获取妹子名字的功能

有过社工科经验的人应该都知道,拿到一个人的手机号码后,其他信息都可以很容易获取到,除了花钱之外,利用支付宝的「模拟转账」方式,可以非常方便的拿到对方的全名。

下面我们用 Python 实现一个手机号码获取妹子名字的功能。

2.编写代码

首先,我们需要爬取国内最常用的一些姓氏,以百度百科 - 中国姓氏为例。

Python 实现一个手机号码获取妹子名字的功能

使用 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 连接不上设备。

这里只需「临时关闭保护功能」即可。

Python 实现一个手机号码获取妹子名字的功能

如果是非好友关系,转账界面对方显示的名字不完全,可以点击「验证按钮」,输入对方的姓氏就能进行确认。

所以,可以遍历上面获取到的姓氏,一个个地去验证。

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 实现一个手机号码获取妹子名字的功能

3.结果结论

拿常用姓氏去一个个验证姓名即可拿到妹子的完整名字。

但是由于支付宝对接口的限制,一个账号每天只能有 10+ 次试错的机会;因此,如果妹子的姓氏不是那么常见,可以需要试错多次才能拿到妹子的名字。

总结

以上所述是小编给大家介绍的Python 实现一个手机号码获取妹子名字的功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python验证码识别的方法
Jul 10 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
python实现梯度法 python最速下降法
Mar 24 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
Python urlopen()参数代码示例解析
Dec 10 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 Python
python中 Flask Web 表单的使用方法
May 20 Python
python 魔法函数实例及解析
Sep 25 #Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 #Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 #Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 #Python
python异步编程 使用yield from过程解析
Sep 25 #Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 #Python
Python缓存技术实现过程详解
Sep 25 #Python
You might like
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
实例浅析js的this
2016/12/11 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
浅谈Python的文件类型
2016/05/30 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
C/C++有关内存的思考题
2015/12/04 面试题
人力资源行政经理自我评价
2013/10/23 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
银行授权委托书格式
2014/10/10 职场文书
员工工作能力评语
2014/12/31 职场文书
新郎答谢词
2015/01/04 职场文书
升职感谢信
2015/01/22 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技