1

目 标 场 景

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

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

有过社工科经验的人应该都知道,拿到一个人的手机号码后,其他信息都可以很容易获成

下面我们用 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

组合的上面获取到的数据,就能得到妹子完整的名字啦。

3

结 果 结 论

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

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

太鸡冻了!我用 Python 偷偷查到暗恋女生的名字的更多相关文章

  1. pyinstaller打包的exe太大?你需要嵌入式python玄学 探索篇

    上篇我们讲到pip的安装以及普通库用pip的安装方法 CodingDog:pyinstaller打包的exe太大?你需要嵌入式python玄学 拓展篇​zhuanlan.zhihu.com 问题纷沓而 ...

  2. pyinstaller打包的exe太大?你需要嵌入式python玄学 拓展篇

    上篇我们讲到embedded版本的基础操作 CodingDog:pyinstaller打包的exe太大?你需要嵌入式python玄学 惊喜篇​zhuanlan.zhihu.com 可是却没有办法用pi ...

  3. pyinstaller打包的exe太大?你需要嵌入式python玄学 惊喜篇

    上篇讲到 pyinstaller打包exe太大的问题 CodingDog:pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇​zhuanlan.zhihu.com 那既然py ...

  4. 这届网友实在是太有才了!用python爬取15万条《我是余欢水》弹幕

    年初时我们用数据解读了几部热度高,但评分差强人意的国产剧,而最近正午阳光带着两部新剧来了,<我是余欢水>和<清平乐>,截止到目前为止,这两部剧在豆瓣分别为7.5分和7.9分,算 ...

  5. 刷抖音太累,教你用Python把高颜值的小姐姐都爬下来慢慢看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果.AirPython 目 标 场 景 相信大家平时刷抖音短视频 ...

  6. pyinstaller打包的exe太大?你需要嵌入式python玄学

    pyinstaller打包一个exe动辄几十M几百M (特别是import pandas以后) 知乎上居然没有人po这方面的”知识“(手动狗头) 查了很多关于reduce pyinstaller打包出 ...

  7. 手敲代码太繁琐?“拖拉拽”式Python编程惊艳到我了

    Python到底有多火,从后端开发到前端开发:从金融量化分析到大数据:从物联网到人工智能,都有Python的踪迹. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后, ...

  8. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  9. Python的链接数上升得太快了!足见Python之火!

随机推荐

  1. MyBatis框架基础详细开发流程

    MyBatis 项目已托管到GitHub,大家可以去GitHub查看下载!并搜索关注微信公众号 码出Offer 领取各种学习资料! 一.框架概述 1.1 什么是框架? 软件的半成品,解决了软件开发过程 ...

  2. python PEP8开发规范

    为了使得代码更美观,方便阅读,建议遵循下PEP8规范 每行长度最大不要超过79. 换行可以使用反斜杠,换行点要在操作符的后面敲回车. 类个top-level函数定义之间空两行:类中的方法定义之间空一行 ...

  3. Java String:字符串常量池(转)

    作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么? 字符串常量池的设计思想是什么? 字符串常量池在哪里? 如何操作字符串常量 ...

  4. 04 drf源码剖析之版本

    04 drf源码剖析之版本 目录 04 drf源码剖析之版本 1. 版本简述 2. 版本使用 3.源码剖析 4. 总结 1. 版本简述 API版本控制使您可以更改不同客户端之间的行为.REST框架提供 ...

  5. Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

    Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...

  6. 如何理解Javascript中的函数(Function)

    Function类型 首先得知道,每个函数都是Function类型的实例,所以函数本身是对象. 示例1: function sum (num1, num2){ return sum1 + sum2; ...

  7. Flutter 快捷开发 Mac Android Studio 篇

    老孟导读:此快捷方式适用于Mac下的 Android Studio .Windows 下的快捷方式请参考这篇文章:https://juejin.im/post/5efe71365188252e7d7f ...

  8. 手把手教你安装Office 2019 for Mac ,安装包和破解码都给你准备好了,还装不上的话,你找我!

    准备一个安装包,和一个破解工具 ​ 安装MicrosoftOffice16.23.19030902_Installer.pkg, 注意在断网情况下安装 同时不要自动更新 , 安装好之后不要打开文件!​ ...

  9. Oracle DataGuard主备切换(switchover)

    Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文记录手动切换. (一)将主库切换为物理备库 STEP1:查看主库状态 SQL> SELECT O ...

  10. react实战 : react 与 svg

    有一个需求是这样的. 一个组件里若干个区块.区块数量不定. 区块里面是一个波浪效果组件,而这个一般用 SVG 做. 所以就变成了在 react 中使用 SVG 的问题. 首先是波浪效果需要的样式. . ...