我如何访问pastebin上的原始私人粘贴?

我知道如何使用 Pastebin API 生成用户密钥,但如何使用此用户密钥来访问原始私人粘贴内容呢?

我正在使用 Lua。

点赞
用户3080396
用户3080396

获取原始的粘贴内容不是 Pastebin API 的一部分:

这个选项实际上不是我们的 API 的一部分,但您可能仍然想要使用它。要获取一个粘贴的原始输出,您可以使用我们的原始数据输出 URL:

http://pastebin.com/raw.php?i=

只需在 URL 的末尾添加 paste_key,您就可以获取原始输出。

由于私人粘贴只能由创建它们的用户查看,所以我的猜测是它们使用登录 cookie 进行身份验证。在这种情况下,您需要将其随 HTTP 请求一起发送。


关于在 Lua 中实现此功能,(因为您没有说使用哪个库)我建议使用 LuaSocket 中的 HTTP 模块 或者非常好用的 Luvit(http://luvit.io)。

2014-06-07 14:03:53
用户1894684
用户1894684

我知道回答这个问题有点晚了,但我希望这会对后来的某个人有所帮助。

如果你想要访问原始的私人粘贴,你首先需要列出用户创建的所有粘贴。这是API的一部分,需要用户登录。

使用此API,您可以列出某个用户创建的所有粘贴。 您需要向下面的URL发送一个有效的POST请求来访问数据:

http://pastebin.com/api/api_post.php

您将获得的响应将是XML响应,如下所示:

<paste>
    <paste_key>0b42rwhf</paste_key>
    <paste_date>1297953260</paste_date>
    <paste_title>javascript test</paste_title>
    <paste_size>15</paste_size>
    <paste_expire_date>1297956860</paste_expire_date>
    <paste_private>0</paste_private>
    <paste_format_long>JavaScript</paste_format_long>
    <paste_format_short>javascript</paste_format_short>
    <paste_url>http://pastebin.com/0b42rwhf</paste_url>
    <paste_hits>15</paste_hits>
</paste>

一旦您获得了XML,就可以解析XML以获取paste_keypaste_private。您需要检查paste_private的值,因为您只想要私人粘贴。文档中写道:

我们有3个有效值可用于与'api_paste_private'参数一起使用:

0 = 公共
1 = 不列出
2 = 私人(只允许与api_user_key组合使用,因为您必须登录到您的帐户才能访问粘贴)

因此,如果您的粘贴将paste_private设置为2,请获取其paste_key

一旦你有了paste_key,就可以使用API调用获取原始粘贴。私人粘贴的paste_key无需用户名或密码即可访问。

玩得开心!

2014-06-21 06:58:52
用户7504558
用户7504558

以下是代码示例:

local https = require('ssl.https')
https.TIMEOUT= 15

local private_raw_url="https://pastebin.com/raw/YOURPAGE" -- 更改原始链接
local user_name, user_password = "USER", "PASS"           -- 以及用户名和密码

local request_body = "submit_hidden=submit_hidden&user_name=".. user_name .. "&user_password=" .. user_password .. "&submit=Login"

local resp = {}
local res, code, headers, status = https.request ( {
                    method = 'POST',
                    url = "https://pastebin.com/login",
                    headers = {
                      Host = "pastebin.com",
                      ["Content-Type"] = "application/x-www-form-urlencoded",
                      ["Content-Length"] = string.len(request_body),
                      Connection = "keep-alive",
                    },
                    source = ltn12.source.string(request_body),
                    sink = ltn12.sink.table(resp),
                    protocol =  "tlsv1",
                    verify = "none",
                    verifyext = {"lsec_continue", "lsec_ignore_purpose"},
                    options = { "all", "no_sslv2", "no_sslv3" }
                } )
if not headers['set-cookie']:find('pastebin_user') then
       print('登录失败')
       return
end
resp={}
local cookie = headers['set-cookie'] or ''
local cookie1, cookie2, cookie3 = cookie:match("(__cfduid=%w+; ).*(PHPSESSID=%w+; ).*(pastebin_user=%w+; )" )
if cookie1 and cookie2 and cookie3 then
        cookie = cookie1 .. cookie2 .. cookie3
        body, code, headers= https.request{
            url = private_raw_url ,
            headers = {
                        --Host = "pastebin.com",
                        ['Cookie'] = cookie,
                        ['Connection'] = 'keep-alive'
                            },
            sink = ltn12.sink.table(resp)
         }

        if code~=200 then  return  end

       print( table.concat(resp) )
else
    print("cookies匹配出错!" )
end
2017-07-25 18:50:14