Python obtiene automáticamente la IP de la red externa y la envía al buzón

  1. Definir la función de get_ip
def get_ip():
    try:
        url = 'https://2021.ip138.com/'
        kv = {
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'}
        par = {
    
    "prd": "resoukuang"}
        html = requests.get(url=url, headers=kv, params=par).text
        soup = BeautifulSoup(html, 'html.parser')
        title = soup.title.string
        return title
    except:
        return ""

Solicite https://2021.ip138.com/ a través de solicitudes, porque su título solo devuelve su IP, luego podemos ir directamente a bs4 para obtener el valor del título y devolverlo 2.
Definir la función para enviar correo

def mail(content):
    # 发送者的邮箱地址
    sender = '发送者的邮箱地址'
    # 接收者的邮箱地址
    receivers = ['接收者的邮箱地址1', '接收者的邮箱地址2']  
    # content是你要发送的内容, 我这里是调用函数穿过来的参数content
    message = MIMEText(content, _subtype='plain', _charset='utf-8')
    # 邮件的发送者
    message['From'] = Header(sender, 'utf-8')
    # 邮件的接收者
    message['To'] = Header('coolwoow', 'utf-8')
    # 邮件的标题
    message['Subject'] = Header('主人, 你家里面的IP又变了:', 'utf-8') 
    smtper = SMTP('smtp.qq.com')
    # QQ邮箱smtp的授权码
    smtper.login(sender, 'QQ邮箱smtp的授权码')  
    smtper.sendmail(sender, receivers, message.as_string())
  1. Complete el código, solo cree el hilo correspondiente para seguir en bucle.Cuando lo uso, se define para detectar si la IP cambia una vez cada hora.
import requests
import threading
from bs4 import BeautifulSoup
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
import time

def get_ip():
    try:
        url = 'https://2021.ip138.com/'
        kv = {
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'}
        par = {
    
    "prd": "resoukuang"}
        html = requests.get(url=url, headers=kv, params=par).text
        soup = BeautifulSoup(html, 'html.parser')
        title = soup.title.string
        return title
    except:
        return ""
def mail(content):
    # 发送者的邮箱地址
    sender = '发送者的邮箱地址'
    # 接收者的邮箱地址
    receivers = ['接收者的邮箱地址1', '接收者的邮箱地址2']  
    # content是你要发送的内容, 我这里是调用函数穿过来的参数content
    message = MIMEText(content, _subtype='plain', _charset='utf-8')
    # 邮件的发送者
    message['From'] = Header(sender, 'utf-8')
    # 邮件的接收者
    message['To'] = Header('coolwoow', 'utf-8')
    # 邮件的标题
    message['Subject'] = Header('主人, 你家里面的IP又变了', 'utf-8') 
    smtper = SMTP('smtp.qq.com')
    # QQ邮箱smtp的授权码
    smtper.login(sender, 'QQ邮箱smtp的授权码')  
    smtper.sendmail(sender, receivers, message.as_string())
# 这里我用一个txt存放上次获取到的值得, 你可以事先把上面get_ip()的结果存在里面
f = open('ip.txt', 'r', encoding='utf-8')
old_ip = f.read()
f.close()
def main():
    global old_ip
    while True:
        if get_ip() != "":
            if old_ip != get_ip():
                old_ip = get_ip()
                mail(old_ip)
                with open('ip.txt', 'w') as f:
                    f.write(old_ip)
        time.sleep(120)

thread_run = threading.Thread(target=main)
thread_run.start()

Supongo que te gusta

Origin blog.csdn.net/qq_40166810/article/details/120533744
Recomendado
Clasificación