利用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 ...
随机推荐
- JEB动态调试解密数据包加密字段
0x00 场景 在测试某个app的时候,抓取数据包,发现某些参数存在被加密的情况,或者有签名校验的情况,这个时候如果我们想直接去篡改数据包的内容往往是做不到的,那就来看看抓取的某个app登录数据包,如 ...
- Tomcat下载教程
首先确定你Windows系统是64位,还是32位(现在大部分是64位) 查看操作系统位数步骤:(WindowsXP,Windows7,Windows8,Windows10查看步骤大同小异,举例Wind ...
- (day49)Django框架简介
目录 一.Web框架 (一)本质 (1)动静态网页 (2)wsgiref模块 (3)jinja2模块 (4)手动实现思路 (二)python主流框架 (1)Django (2)flask (3)tor ...
- 洛谷 P1381 单词背诵
洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...
- 42 在Raspberry Pi上安装dlib表情识别
https://www.jianshu.com/p/848014d8dea9 https://www.pyimagesearch.com/2017/05/01/install-dlib-raspber ...
- java 内存日志分析
GC日志开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型, 而不是用来区分新生代GC还是老年代GC的. 如果有“Full”, 说明这次GC是发生了Stop-The-World的, 例 ...
- T-SQL 简介
1. 变量说明语句:用来说明变量的命令. 2. 数据定义语言(Data Definition Language,DDL):用来建立数据库和定义列等数据结构,主要是create table,drop d ...
- 为什么MySQL数据库要用B+树存储索引?
问题:MySQL中存储索引用到的数据结构是B+树,B+树的查询时间跟树的高度有关,是log(n),如果用hash存储,那么查询时间是O(1).既然hash比B+树更快,为什么mysql用B+树来存储索 ...
- Codeforces Round #573 (Div. 2) Tokitsukaze and Mahjong 水题
B. Tokitsukaze and Mahjong time limit per test1 second memory limit per test256 megabytes Tokitsukaz ...
- 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全
转自:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.random((1000, 20) ...