IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> pastebin登录 -> 正文阅读

[Python知识库]pastebin登录

"""
_csrf-frontend:
LoginForm[username]:
LoginForm[password]:

curl -X POST -d 'api_dev_key=NrTIaNdai-v2PlCNVmYuC4ZplXKBwBYX' -d 'api_paste_code=test' -d 'api_option=paste' "https://pastebin.com/api/api_post.php"

"""
from lxml import etree

import requests


class PasteBin:
    def __init__(self):
        self.headers = {
            'content-type': 'application/x-www-form-urlencoded',
            "Cookie": "",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"
        }
        self.username = ''
        self.password = ''
        self.csrf_token = None
        self.session_login = None
        self.session_login_status = 0
        self.api_key = None
        self.user_key = None

    def get_csrf_token(self):
        get_url = 'https://pastebin.com/login'

        req = requests.get(get_url, headers=self.headers)
        if req.status_code == 200:
            root = etree.HTML(req.text)
            try:
                csrf_token = root.xpath('//meta[@name="csrf-token"]/@content')
                if csrf_token:
                    self.csrf_token = csrf_token[0]
                    return "get csrf_token successful"
                else:
                    return "csrf_token not found"
            except Exception as e:
                print(e)
        else:
            return "get csrf_token failed"

    def login(self):
        if self.csrf_token:
            url = "https://pastebin.com/login"
            data = {
                "_csrf-frontend": str(self.csrf_token),
                "LoginForm[username]": self.username,
                "LoginForm[password]": self.password
            }
            self.session_login = requests.session()
            try:
                req = self.session_login.post(url, headers=self.headers, data=data)
                if req.status_code == 200:
                    self.session_login_status = 1
                    return "login successful"
                else:
                    return "login failed"
            except Exception as e:
                print(e)
        else:
            return "csrf_token not found"

    def get_api_key(self):
        if self.session_login_status == 1:
            doc_api = 'https://pastebin.com/doc_api'
            req1 = self.session_login.get(doc_api)
            root_doc_api = etree.HTML(req1.text)
            try:
                api_key = root_doc_api.xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div[6]/div//text()')
                if api_key:
                    self.api_key = api_key[0]
                    return "get api_key successful"
                else:
                    return "api_key not found"
            except Exception as e:
                print(e)
        else:
            return "session_login_status err"

    def get_user_key(self):
        url = "https://pastebin.com/api/api_login.php"
        data = {
            "api_dev_key": self.api_key,
            "api_user_name": self.username,
            "api_user_password": self.password
        }
        rep = self.session_login.post(url, data=data)
        if rep.status_code != 200:
            raise Exception("get api_user_key fail")
        self.user_key = rep.text

    def post_content(self, api_paste_code, api_paste_name):
        """
        :param api_paste_code: 黏贴内容
        :param api_paste_name: 名称
        :return:
        """
        self.get_user_key()
        data = {"api_dev_key": self.api_key,
                "api_option": "paste",
                "api_paste_code": api_paste_code,
                "api_paste_name": api_paste_name,
                "api_user_key": self.user_key,
                # public = 0,unlisted = 1,private = 2
                "api_paste_private": 2}
        url = "https://pastebin.com/api/api_post.php"
        r = self.session_login.post(url, data=data)
        if r.status_code != 200:
            raise Exception("create paste fail")
        else:
            return "create paste successful"


def get_busybox():
    headers = {
        'Authorization': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52',
    }
    url = 'http:/msg.txt'
    try:
        req = requests.get(url, headers=headers)
        return str(req.text)
    except Exception as e:
        print(e)
        return ''


if __name__ == '__main__':
    content = get_busybox()
    if content:
        p = PasteBin()
        print(p.get_csrf_token())
        print(p.login())
        print(p.get_api_key())
        print(p.post_content(content, "test"))
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:25:08  更:2021-09-23 11:25:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:52:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码