利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste
登录之后,进入API页面,发现网站已经提供了几个API接口供调用

在创建paste之前,需要创建一个api_user_key,将得到的api_user_key作为创建paste API的提交数据。
这里给出实现整个任务的代码:
import requests
from lxml import etree class PasteBin(object):
def __init__(self, username, password):
self.username = username
self.password = password def login(self):
login_url = "https://pastebin.com/login"
self.session = requests.Session()
form_data = {
"submit_hidden": "submit_hidden",
"user_name": self.username,
"user_password": self.password,
"submit": "Login"
}
headers = {"content-type": "application/x-www-form-urlencoded"}
res = self.session.post(login_url, data=form_data, headers=headers)
if res.status_code != 200:
raise Exception("login fail")
# 获取api_dev_key
self.api_dev_key = self.get_api_dev_key() def get_api_dev_key(self):
api_url = "https://pastebin.com/api"
text = self.session.get(api_url).content.decode("utf-8")
html = etree.HTML(text)
target_divs = html.xpath('//*[@id="content_left"]/div[9]/div/text()')
if target_divs:
api_dev_key = target_divs[0]
print("api_dev_key:", api_dev_key)
else:
raise Exception("cannot find api_dev_key")
return api_dev_key def get_api_user_key(self):
url = "https://pastebin.com/api/api_login.php"
post_data = {
"api_dev_key": self.api_dev_key,
"api_user_name": self.username,
"api_user_password": self.password
}
r = requests.post(url, data=post_data)
if r.status_code != 200:
raise Exception("get api_user_key fail")
return r.text def create_paste(self, paste_name, paste_code):
api_user_key = self.get_api_user_key()
create_paste_url = "https://pastebin.com/api/api_post.php"
post_data1 = {"api_dev_key": self.api_dev_key,
"api_option": "paste",
"api_paste_code": paste_code,
"api_paste_name": paste_name,
"api_user_key": api_user_key,
"api_paste_private": 2}
r = requests.post(create_paste_url, data=post_data1)
if r.status_code != 200:
raise Exception("create paste fail")
else:
print("create paste succeed") if __name__ == "__main__":
username = "kuang123321"
password = "xxxxxx"
p = PasteBin(username, password)
p.login()
p.create_paste("by code1", "This is a code test")
利用Python调用pastebin.com API自动创建paste的更多相关文章
- python调用openstack的api,create_instance的程序解析
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
- Python 调用图像融合API
Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...
- 用Python调用华为云API接口发短信
[摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...
- python 调用github的api,呈现python的受欢迎的程度
1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...
- Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- Python 调用阿里云 API 收集 ECS 数据
#!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...
- Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)
1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...
- Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口
WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...
- PYTHON调用JENKINS的API来进行CI
我查到的相关API有两套,我主要用的是python-jenkins. https://pypi.python.org/pypi/python-jenkins/ 按语法调用即可... import je ...
随机推荐
- 10.JavaCC官方入门指南-例5
例5:计算器--添加乘除法运算 1.calculator2.jj 根据上一个例子,可知要添加乘法和除法运算是很简单的,我们只需在词法描述部分添加如下两个token: TOKEN : { < TI ...
- [日常] 神奇的引导问题deepin与win10
经过昨天的一番折腾,我的电脑一开机就可以进入deepin的引导界面,也可以登录到deepin,但是访问windows直接报错.我的windows已经使用PE安装完了win10,还是打不开. 当我在研究 ...
- RSA 登陆加密与解密
最近公司项目验收后,客户请来的信息安全技术人员对我们的网站进行了各种安全测试与排查问题,其中就有一个登陆时的加密问题.本来如果只是单纯的加密,可以直接在前台用MD5加密,将加密的值添加到数据库即可.但 ...
- UEFI Install CentOS 7
bios必须设置u盘为第一启动项 编辑E:\EFI\BOOT\grub.cfg中所有inst.stage2=hd:LABEL=*与卷标名称一致(区分大小写)(linux系统写入镜像无需修改) inst ...
- git clone克隆代码显示“无权限或者确认存储库是否存在”
今天我用公司的电脑要继续完成我自己的git上的小项目的时候,发现git clone失败,提示 然后我在公司电脑上生成公钥感觉又太麻烦了 网上找了个好方法就是把自己电脑上的.ssh文件夹拷贝到公司电脑上 ...
- C++学习一 结构与结构体
结构体属于C++与C区别之一. 代码例子如下(来自<C++程序设计>): #include <iostream> #include <string> using n ...
- 浅谈JS的toString
任何一个对象都有toString()方法(默认继承自Object,自己可以重写),此方法返回一个字符串. var sayYo = function () { alert("sayYo2!&q ...
- VLAN实验(5)三层交换
1.选择1台S5700和3台pc机,并根据实验编址完成此拓扑图. 2.检查连通性 (1)因为mengyu-PC1和mengyu-PC2在一个地址段上,可以ping通 (2)因为mengyu-PC1和m ...
- day67_10_11
一.路由跳转 在vue中,路由条状有很多种. 其中有点击事件触发的路由跳转: this.$router.push('/course'); 和通过名字跳转的: this.$router.push({na ...
- html:判断两次密码不一致以及阻止提交
参考博客:https://blog.csdn.net/pleasecallmewhy/article/details/8583424 https://blog.csdn.net/weixin_4093 ...