首页 > 其他分享 >cpolar自动化登录服务器

cpolar自动化登录服务器

时间:2022-10-27 15:11:05浏览次数:87  
标签:name 登录 html ssh cpolar 服务器

目录

免责声明
这里使用的是自己的主机搭建的Linux服务器,如果用于生产网络等商用场景,出现问题本文概不负责。
同时在本文写作时,cpolar自身的robots.txt声明如下,并未禁止爬虫。

User-agent: *
Disallow:
Sitemap: https://www.cpolar.com/sitemap.xml

本文简介

家里没有公网ipv4,公网ipv6默认不能直接访问,懒得找电信公司。
本文使用cpolar这个内网穿透工具实现对服务器不用登录官网查地址的访问。
简单来说,就是由于免费的cpolar账户不能固定端口,每次登录服务器都需要查看地址和端口,有些麻烦。
这里用爬虫抓取当前的地址和端口,进行自动化登录。不用再打开网页,每次输入地址和端口,这里只需要输入密码即可。
如果有条件,请支持cpolar其他非免费版本,以获得更好的体验。

实现

cpolar的账号注册、安装这里不再讲述。请查看其他博文或者官网文档

正常的流程使用cpolar进行登录服务器的流程是:

  1. 打开cpolar官网;
  2. 登录账号;
  3. 查看当前给分配的地址和端口;
  4. 使用ssh连接服务器。

让程序替代我们去干这4件事,减少麻烦事情。最后登录的时候,还需要干一件事情就是需要输入服务器的密码。

下面的代码需要修改的是如下前3个。请自行pip安装requestsbs4

  1. 账号,也就是cpolar账号
  2. 密码,即cpolar密码
  3. 用户名,服务器上的默认用户名
  4. csrf_token不知道是不是会变,也不知道是不是都一样,姑且认为是一样的。如果有改变,则需要自己查看网页中的csrf_token。在登录页面,查看源码并搜索即可。
import requests
import os
import sys
import re
from bs4 import BeautifulSoup

def browser(url):
    login_page = 'https://dashboard.cpolar.com/login'
    try:
        session = requests.Session()
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
        }

        params = {
            'login': '1. 账号',
            'password': '2. 密码',
            'csrf_token': '1538662349.68##b5aa35f374452a6198004dab20d88b13583c7c2c'
        }
        resp = session.post(login_page, params, headers=headers)
        resp = session.get(url, headers=headers)
        data = resp.content.decode('UTF-8')
        return data
    except Exception as e:
        print(str(e))

def parse_html(html):
    ret = []
    css_rule = '#dashboard > div > div:nth-child(2) > div.span9 > table > tbody > tr > th > a'
    soup = BeautifulSoup(html, features="html.parser")
    items = soup.select(css_rule)

    for item in items:
        pat = 'tcp://(.*?):(\d+)'
        rs = re.match(pat, str(item.text))
        ret.append({'address': rs[1], 'port': rs[2]})
    return ret

def parse_args():
    if len(sys.argv) == 1:
        name = '3. 服务器用户名'
    else:
        name = sys.argv[1]
    return name

def main():
    url = 'https://dashboard.cpolar.com/status'
    html = browser(url)
    raw_sshs = parse_html(html)
    print(raw_sshs)
    name = parse_args()
    for ssh in raw_sshs:
        os.system('ssh %s@%s -p %s' % (name, ssh['address'], ssh['port']))
        # exit()

if __name__ == '__main__':
    main()

注意

我猜测这里因为cpolar的缘故,应该没法实现自动登录了。所以我删除了一些读取写入ssh config的代码,如果出现问题,请自己debug吧。

标签:name,登录,html,ssh,cpolar,服务器
From: https://www.cnblogs.com/basilguo/p/nat_cpolar.html

相关文章