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 相关文章推荐
在java中如何定义一个抽象属性示例详解
Aug 18 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
python方法生成txt标签文件的实例代码
May 10 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
python单元测试之pytest的使用
Jun 07 Python
python接口测试返回数据为字典取值方式
Feb 12 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
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
显示、隐藏密码
2006/07/01 Javascript
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
Python入门篇之正则表达式
2014/10/20 Python
Python作用域用法实例详解
2016/03/15 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
python pygame实现球球大作战
2019/11/25 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
程序员机试试题汇总
2012/03/07 面试题
会计专业毕业生自荐信范文
2013/12/20 职场文书
农村婚礼证婚词
2014/01/10 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA