如何解决如何使用Python从Azure Function Http请求中获取IP地址
我如何使用python从此请求HTTP获取IP地址?我发现一些使用C#的帖子,像这样: Get remote IP address in Azure function
我有此代码:
import logging
import json
import socket
import getpass
import os
from requests import get
import azure.functions as func
from azure.common.client_factory import get_client_from_json_dict,get_client_from_cli_profile
from azure.mgmt.sql import SqlManagementClient
from azure.mgmt.resource import SubscriptionClient
from azure.common.credentials import ServicePrincipalCredentials
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
Myip = get('https://api.ipify.org').text
username = getpass.getuser()
return func.HttpResponse(
f"List of IPs: {str(Myip)}",status_code=200
)
图像显示了本地请求的结果。
https://i.stack.imgur.com/AkZKm.png
解决方法
您的请求结果应保存到响应变量中。
在阅读响应正文之前,您可以使用以下代码来获取IP地址。假设您的响应变量称为rsp
print rsp.raw._fp.fp._sock.getpeername()
这里有一个类似的问题= How do I get the IP address from a http request using the requests library?
此处有更多信息,Python: get remote IP from HTTP request using the requests module
更新 具有请求2.22.0的Python3.8
resp = requests.get('https://www.google.com',stream=True)
resp.raw._connection.sock.getsockname()
,
您可以从 req 对象中的 x-forwarded-for 标头中获取传入请求的源 IP。我使用以下代码来记录它:
if "x-forwarded-for" in req.headers:
source_ip = req.headers["x-forwarded-for"].split(':')[0]
logging.info("Incoming request from IP: " + source_ip)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。