import gradio as gr import socket def predict(text, request: gr.Request): client_ip = request.client.host local_ip = socket.gethostbyname(socket.gethostbyname("")) headers = request.kwargs['headers'] if headers and 'x-forwarded-for' in headers: x_forwarded_for = headers['x-forwarded-for'] client_ip = x_forwarded_for.split(' ')[0] if x_forwarded_for else "" print("client_ip", client_ip, text, "\n\n") return text, {"client_ip": client_ip, "local_ip": local_ip, "headers": headers} with gr.Blocks() as block: gr.Markdown("## Gradio get client IP") text = gr.Textbox(label="dummy input") output = gr.JSON({}) btn = gr.Button("Test") btn.click(predict, inputs=[text], outputs=[text, output]) block.queue() block.launch(share=False, server_name='0.0.0.0', show_api=True)