2012-11-04 112 views

回答

1

得到原料糊箱輸出的Pastebin API部分:

這個選項其實不是我們的API的一部分,但你可能仍然想使用它。爲了得到糊狀的RAW輸出,您可以使用我們的RAW數據輸出網址:

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

只需在該URL的末尾添加paste_key,你會得到的原始輸出。

由於私人粘貼只能由創建它們的用戶看到,我的猜測是他們使用logincookie進行身份驗證。在這種情況下,您需要使用HTTP請求發送它。


在對於在Lua實現這一點,(因爲你還沒有說你正在使用的庫)我要出去,並建議在LuaSocket或精彩Luvit(http://luvit.io)的HTTP module

0

我知道這個問題有點晚,無法回答這個問題,但我希望這會對以後的人有所幫助。

如果您想訪問原始專用粘貼,您首先需要列出用戶創建的粘貼。這是API的一部分。這需要用戶登錄。

使用此API可以列出由某個用戶創建的所有粘貼。 您需要發送一個有效的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得到paste_keypaste_private。您需要檢查paste_private的值,因爲您只需要私人粘貼。該文件說:

我們有3個有效值可用,您可以用 「api_paste_private」參數一起使用:

0 = Public 
1 = Unlisted 
2 = Private (only allowed in combination with api_user_key, as you have to be logged into your account to access the paste) 

因此,如果您貼有paste_private設置爲2,得到paste_key

一旦你有paste_key,使用API​​調用來獲取RAW粘貼。一旦您擁有私人粘貼的粘貼密鑰,就不需要用戶名或密碼。

玩得開心!

1

下面是代碼爲你一個現成的例子:

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

    local private_raw_url="https://pastebin.com/raw/YOURPAGE" -- Change raw link 
    local user_name, user_password = "USER", "PASS"   -- and user with password 

    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('bad login') 
      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("error match cookies!") 
    end