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删除指定目录下过期文件的2个脚本分享
Apr 10 Python
python实现的一个火车票转让信息采集器
Jul 09 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
Python 修改列表中的元素方法
Jun 26 Python
Flask实现跨域请求的处理方法
Sep 27 Python
flask框架路由常用定义方式总结
Jul 23 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
Python 文件数据读写的具体实现
Jan 24 Python
Python实现ATM系统
Feb 17 Python
Python如何爬取qq音乐歌词到本地
Jun 01 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
example2.php
2006/10/09 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
VBScript版代码高亮
2006/06/26 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
常见的python正则用法实例讲解
2016/06/21 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python多任务之协程的使用详解
2019/08/26 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
简述 Python 的类和对象
2020/08/21 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
学习交流会主持词
2014/04/01 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
人代会标语
2014/06/30 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
法人身份证明书
2014/10/08 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python