轻识Logo
目录

    Python 帮你批量生成手机号码

    作者 | 星安果
    来源 | AirPython

    阅读文本大概需要 8 分钟。


    1

    目 标 场 景


    平时在工作过程中,偶尔会需要大量的 手机号码,去测试一些具体的业务功能,为了保证测试的有效性,手机号码的 真实性 尤为的重要。


    那如何按要求 批量生成 一些真实的手机号码呢?


    本篇文章的目的是带大家利用 Python 批量生成手机号码。

    2

    编 写 代 码


    要批量生成手机号码,首先需要了解 11 位手机号码的组成规律,即:

    • 手机号码一共有 11 位,以 1 开头

    • 第 2 位的数值是 3、4、5、7、8 中的一个

    • 第 3 位根据第 2 位的数字,对应运营商的生成规律

    • 后 8 位是随机生成的 8 个数字


    知道手机号码的组成规律后,接着把数字拼接起来,即可以生成一个手机号码。


    def create_a_phone():
        # 第二位数字
        second = [3, 4, 5, 7, 8][random.randint(0, 4)]

        # 第三位数字
        third = {3: random.randint(0, 9),
                 4: [5, 7, 9][random.randint(0, 2)],
                 5: [i for i in range(10) if i != 4][random.randint(0, 8)],
                 7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)],
                 8: random.randint(0, 9), }[second]

        # 最后八位数字
        suffix = random.randint(9999999, 100000000)

        # 拼接手机号
        return "1{}{}{}".format(second, third, suffix)


    由于三大运营商的号段一直在更新变化,上面组成的手机号码也有可能不是一个有效的号码。


    为了保证号码的真实性,利用号码去获取 手机号码归属地,如果能获取到归属地,即代表为一个真实有效的号码。


    62cae0bc81ac808913956fc306b498bb.webp


    淘宝和百度都提供了查询归属地的 API,可以非常方便的查询号码的归属地。


    def judge_phone_ava(phone):
        """
        判断手机号码是否合理
        :param phone:手机号码
        :return:
        """

        resp_content = requests.get('http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=%s' % phone).content
        txt = json.loads(resp_content)

        result = txt.get('response').get(phone)

        return result


    循环上面的操作,可以生成一些随机的手机号码,正因为生成号码的随机性,使得数据的价值性大打折扣。


    如果我需要批量生成指定城市的手机号码,上面的这种方法没法做到。幸运地是,有一个网站(https://uutool.cn/phone-generate/)已经实现了这个功能,我们只需要用 Python 模拟请求即可。



    b0a9e6b80a56c36ffe69137df4027160.webp


    选择手机号码归属地、包含号段、数量,就能快速生成我们想要的手机号码,按 F12 可以查看网络请求方式及参数。


    3c343e316847e7f5f9c5f74366554192.webp


    请求参数中的区域代码对应选择的省+市区,这部分数据利用 JS 加载到页面中了。


    6a6e4a7d8adc40ce95ea06389a594b73.webp


    我们只需要解析网页源代码,利用正则表达式查找对应的字符串,解析出 区域 ID 和城市名称


    def get_all_citys():
        """
        获取所有的城市数据
        :return:
        """


        headers = {
            'authority''uutool.cn',
            '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/79.0.3945.88 Safari/537.36',
            '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;q=0.9',
            'sec-fetch-site''none',
            'sec-fetch-mode''navigate',
            'accept-encoding''gzip, deflate, br',
            'accept-language''zh-CN,zh;q=0.9,en;q=0.8',
            'cookie''UM_distinctid=16f759fe6bd24b-0322efd0d180d8-1d376b5b-1aeaa0-16f759fe6beb69; CNZZDATA1275106188=191793625-1578225029-https%253A%252F%252Fwww.google.com%252F%7C1578316721',
        }

        resp = requests.get('https://uutool.cn/phone-generate/', headers=headers).text

        re_rule = r'areaArr:(.+?)segmentArr:'

        # 匹配换行符
        result_data = re.findall(re_rule, resp, re.S)[0].strip()[:-1]

        result = json.loads(result_data)

        # 获取所有的省份
        provices = result.keys()

        # 所有的城市
        citys = {}

        for provice in provices:
            current_citys = result.get(provice)
            # citys.extend(current_citys)
            for item in current_citys:
                citys[item.get('name')] = item.get('id')

        return citys


    拿到城市名称和区域 ID 的关系数据后,模拟网络请求,即可以批量生成目标城市的手机号码。


    citys = get_all_citys()

    city_name = input('请输入手机归属地:')

    if city_name not in citys.keys():
         city_name = '北京'

    # 获取城市id
    city_id = citys.get(city_name)

    phones = generate_phones(num, city_id)

    # pass


    3

    结 果 结 论


    通过上面的操作,就能按照自己的需求,批量生成一些真实有效的手机号码。


    接下来,可以结合自动化操作,可以使得我们生成的数据价值最大化。


    源码地址:https://github.com/xingag/tools_python/tree/master/%E6%89%B9%E9%87%8F%E7%94%9F%E6%88%90%E6%89%8B%E6%9C%BA%E5%8F%B7%E7%A0%81

    浏览 134
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报
    高效办公!Python 批量生成PDF文档
    大邓和他的Python
    0
    高效办公!Python 批量生成PDF文档
    Python实用宝典
    0
    Faker.Net测试数据批量生成
    Faker.Net可以非常方便帮你生成大批量测试数据。例如人员表里面的姓名、性别什么的。
    Faker.Net测试数据批量生成
    0
    Faker.Net测试数据批量生成
    Faker.Net 可以非常方便帮你生成大批量测试数据。例如人员表里面的姓名、性别什么的。
    Faker.Net测试数据批量生成
    0
    Python自动化办公:读取Excel数据并批量生成合同
    俊红的数据分析之路
    0
    Transformer Decoder-Only 模型批量生成 Trick
    极市平台
    0
    Python批量改变图片名字
    Python之王
    0
    【Python】用Python生成LaTeX公式!
    公众号:尤而小屋作者:Peter编辑:Peter 本文介绍了一种方法: 如何使用Python代码来生成LaTeX数学公式 。 安装Latexify 这个工具 Google 出品的, github 地址:https://github.com/google/latexify_py 使用之前需...
    机器学习初学者
    0
    【Python基础】Python列表生成式
    机器学习初学者
    0
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报

    深圳SEO优化公司松原高端网站设计报价随州高端网站设计保定seo优化海东外贸网站建设价格福永网络推广推荐临沂阿里店铺托管推荐宁德网络推广公司锦州网站优化价格安庆阿里店铺运营推荐光明网站改版价格海南seo公司平凉SEO按天计费多少钱聊城百度爱采购公司锦州营销型网站建设价格柳州网站推广哪家好沈阳品牌网站设计报价广安网站推广系统哪家好伊犁网站搜索优化价格朔州seo推荐清徐企业网站制作多少钱大浪网站推广工具价格达州网页制作价格淮南网站优化排名多少钱深圳设计公司网站推荐益阳SEO按天收费推荐韶关建站价格烟台企业网站制作包头营销网站价格福州百度标王推荐宝安百度seo歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化