使用Python追踪电话号码的位置

1,233 阅读2分钟

在本教程中,我们将解释如何使用Python开发追踪电话号码位置的应用程序。

我们可以在Python中使用包轻松获得电话号码的详细信息。因此,在本教程中,我们将使用Python开发一个网络应用程序来跟踪电话号码的位置和相关细节。

因此,让我们继续开发使用Python追踪电话号码位置的应用程序。

应用程序的设置

我们将使用以下命令创建应用程序目录track-phone-number-python

$ mkdir track-phone-number-python

我们移到项目目录下。

$ cd track-phone-number-python

需要的模块

我们将使用以下模块来实现对电话号码的追踪:

  • phonenumbers。这是一个Python包,可以用来获取电话号码的详细信息。你可以用下面的命令来安装它。
pip install phonenumbers

  • Flask。由于我们将创建一个网络应用程序,所以我们将安装Flask来使用Python创建网络应用。你可以使用下面的命令来安装它:
pip install Flask

创建应用程序文件

现在我们将在项目的根目录下创建我们的应用程序文件app.py

然后我们将导入已安装的软件包flaskphonenumbers 到我们的应用程序文件。

from flask import Flask, render_template, request, redirect, url_for
import phonenumbers
from phonenumbers import geocoder, carrier

我们将创建Flask应用程序对象并设置路由。

app = Flask(__name__)
     
@app.route('/')
@app.route('/trace', methods =['GET', 'POST'])

我们将创建函数trace() ,并实现通过获取表单提交后的值来追踪电话号码的功能。我们将使用parse() 函数解析电话号码,然后将解析后的电话号码传递给函数description_for_number() 函数,以获得号码详情。我们还将使用name_for_number() 函数获得服务提供商的详细信息。

phoneNumber = phonenumbers.parse(number)
phoneDetails = geocoder.description_for_number(phoneNumber, 'en')
serviceProvider = carrier.name_for_number(phoneNumber, 'en')

在得到电话号码的细节后,我们将把细节传递给模板文件trace.html ,以呈现数值。

return render_template('trace.html', mesage = mesage, phoneNumber = phoneNumber, phoneDetails = phoneDetails, serviceProvider = serviceProvider)

下面是app.py 文件的完整代码。

from flask import Flask, render_template, request, redirect, url_for
import phonenumbers
from phonenumbers import geocoder, carrier

app = Flask(__name__)
     
@app.route('/')
@app.route('/trace', methods =['GET', 'POST'])
def trace():
    mesage = ''    
    phoneNumber = ''
    phoneDetails = ''
    serviceProvider = ''
    if request.method == 'POST' and 'number' in request.form:
        number = request.form['number']
        if not number:
            mesage = 'Please enter mobile number with country code!'
        else:
            phoneNumber = phonenumbers.parse(number)
            phoneDetails = geocoder.description_for_number(phoneNumber, 
                                          'en')
            serviceProvider = carrier.name_for_number(phoneNumber,
            
                                  'en')
    return render_template('trace.html', mesage = mesage, phoneNumber = phoneNumber, phoneDetails = phoneDetails, serviceProvider = serviceProvider)
    
if __name__ == "__main__":
    app.run()                                      

创建模板文件

我们将在项目的根目录下创建目录templates 。然后我们将创建模板文件trace.html ,并创建带有文本输入和提交按钮的html表单。

<form action="{{ url_for('trace') }}" method="post">		
	<div class="form-group">
		<label for="email">Enter Phone Number(with country code):</label>
		<input type="text" class="form-control" id="number" name="number"  placeholder="+91**********" >
	</div>		
	<button type="submit" class="btn btn-primary">Trace</button>		
</form>

我们将在电话号码输入和表格提交后显示电话号码的详细信息。

{% if phoneDetails is defined and phoneDetails %}
	<div class="alert alert-success">Details: {{ phoneNumber }}</div>
	<div class="alert alert-success">Country : {{ phoneDetails }}</div>
	<div class="alert alert-success">Service Provider : {{ serviceProvider }}</div>
{% endif %}

下面是templates/trace.html 文件的完整代码。

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Trace Phone Number Location Using Python</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
</head>
<body>	
<div class="container">
	<br>
	<h2>Trace Phone Number Location Using Python</h2>
	<br>
	<form action="{{ url_for('trace') }}" method="post">
	    {% if mesage is defined and mesage %}
			<div class="alert alert-warning">{{ mesage }}</div>
		{% endif %}
		{% if phoneDetails is defined and phoneDetails %}
			<div class="alert alert-success">Details: {{ phoneNumber }}</div>
			<div class="alert alert-success">Country : {{ phoneDetails }}</div>
			<div class="alert alert-success">Service Provider : {{ serviceProvider }}</div>
		{% endif %}
		<div class="form-group">
			<label for="email">Enter Phone Number(with country code):</label>
			<input type="text" class="form-control" id="number" name="number"  placeholder="+91**********" >
		</div>		
		<button type="submit" class="btn btn-primary">Trace</button>		
	</form>
</div>
</body>
</html>