<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 幫你批量生成手機(jī)號碼

          共 3417字,需瀏覽 7分鐘

           ·

          2020-01-16 23:25

          作者 |?星安果
          來源 |?AirPython

          閱讀文本大概需要 8 分鐘。


          1

          目 標(biāo) 場 景


          平時在工作過程中,偶爾會需要大量的?手機(jī)號碼,去測試一些具體的業(yè)務(wù)功能,為了保證測試的有效性,手機(jī)號碼的?真實(shí)性?尤為的重要。


          那如何按要求?批量生成?一些真實(shí)的手機(jī)號碼呢?


          本篇文章的目的是帶大家利用 Python 批量生成手機(jī)號碼。

          2

          編 寫 代 碼


          要批量生成手機(jī)號碼,首先需要了解 11 位手機(jī)號碼的組成規(guī)律,即:

          • 手機(jī)號碼一共有 11 位,以 1 開頭

          • 第 2 位的數(shù)值是 3、4、5、7、8 中的一個

          • 第 3 位根據(jù)第 2 位的數(shù)字,對應(yīng)運(yùn)營商的生成規(guī)律

          • 后 8 位是隨機(jī)生成的 8 個數(shù)字


          知道手機(jī)號碼的組成規(guī)律后,接著把數(shù)字拼接起來,即可以生成一個手機(jī)號碼。


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

          ????#?第三位數(shù)字
          ????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]

          ????#?最后八位數(shù)字
          ????suffix?=?random.randint(9999999,?100000000)

          ????#?拼接手機(jī)號
          ????return?"1{}{}{}".format(second,?third,?suffix)


          由于三大運(yùn)營商的號段一直在更新變化,上面組成的手機(jī)號碼也有可能不是一個有效的號碼。


          為了保證號碼的真實(shí)性,利用號碼去獲取?手機(jī)號碼歸屬地,如果能獲取到歸屬地,即代表為一個真實(shí)有效的號碼。


          62cae0bc81ac808913956fc306b498bb.webp


          淘寶和百度都提供了查詢歸屬地的 API,可以非常方便的查詢號碼的歸屬地。


          def?judge_phone_ava(phone):
          ????"""
          ????判斷手機(jī)號碼是否合理
          ????:param?phone:手機(jī)號碼
          ????: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


          循環(huán)上面的操作,可以生成一些隨機(jī)的手機(jī)號碼,正因?yàn)樯商柎a的隨機(jī)性,使得數(shù)據(jù)的價值性大打折扣。


          如果我需要批量生成指定城市的手機(jī)號碼,上面的這種方法沒法做到。幸運(yùn)地是,有一個網(wǎng)站(https://uutool.cn/phone-generate/)已經(jīng)實(shí)現(xiàn)了這個功能,我們只需要用 Python 模擬請求即可。



          b0a9e6b80a56c36ffe69137df4027160.webp


          選擇手機(jī)號碼歸屬地、包含號段、數(shù)量,就能快速生成我們想要的手機(jī)號碼,按 F12 可以查看網(wǎng)絡(luò)請求方式及參數(shù)。


          3c343e316847e7f5f9c5f74366554192.webp


          請求參數(shù)中的區(qū)域代碼對應(yīng)選擇的省+市區(qū),這部分?jǐn)?shù)據(jù)利用 JS 加載到頁面中了。


          6a6e4a7d8adc40ce95ea06389a594b73.webp


          我們只需要解析網(wǎng)頁源代碼,利用正則表達(dá)式查找對應(yīng)的字符串,解析出?區(qū)域 ID 和城市名稱


          def?get_all_citys():
          ????"""
          ????獲取所有的城市數(shù)據(jù)
          ????: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


          拿到城市名稱和區(qū)域 ID 的關(guān)系數(shù)據(jù)后,模擬網(wǎng)絡(luò)請求,即可以批量生成目標(biāo)城市的手機(jī)號碼。


          citys?=?get_all_citys()

          city_name = input('請輸入手機(jī)歸屬地:')

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

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

          phones?=?generate_phones(num,?city_id)

          #?pass


          3

          結(jié) 果 結(jié) 論


          通過上面的操作,就能按照自己的需求,批量生成一些真實(shí)有效的手機(jī)號碼。


          接下來,可以結(jié)合自動化操作,可以使得我們生成的數(shù)據(jù)價值最大化。


          源碼地址: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

          瀏覽 191
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本在线免费A∨视频 | 国产精品一 | 五月天黄色电影网站 | 青青草国产在线 | 91伦理视频|