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使用pil生成图片验证码的方法
May 08 Python
详解Python多线程
Nov 14 Python
Python对象转换为json的方法步骤
Apr 25 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
python使用正则来处理各种匹配问题
Dec 22 Python
在python里创建一个任务(Task)实例
Apr 25 Python
新手学python应该下哪个版本
Jun 11 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
python中remove函数的踩坑记录
Jan 04 Python
python playwright 自动等待和断言详解
Nov 27 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
Cannot modify header information错误解决方法
2008/10/08 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Python操作MySQL简单实现方法
2015/01/26 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
Python反射用法实例简析
2017/12/22 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
超简单使用Python换脸实例
2019/03/27 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
施工工地安全标语
2014/06/07 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
承诺函范文
2015/01/21 职场文书
刑事法律意见书
2015/06/04 职场文书
导游词之河北野三坡
2019/12/11 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android