2012-11-04 21 views

Trả lời

1

Lấy ra dán bin liệu là không phần của Pastebin API:

Tùy chọn này thực ra không phải là một phần của API của chúng tôi, nhưng bạn vẫn có thể muốn sử dụng nó. Để có được sản lượng RAW của một dán bạn có thể sử dụng URL đầu ra dữ liệu RAW của chúng tôi:

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

Chỉ cần thêm paste_key ở phần cuối của URL đó và bạn sẽ nhận được đầu ra RAW.

Vì bột nhão riêng chỉ có thể được nhìn thấy bởi người dùng đã tạo chúng, tôi đoán là họ sử dụng nhật ký xác thực. Trong trường hợp đó, bạn sẽ cần gửi nó với yêu cầu HTTP.


Đối để thực hiện điều này trong Lua, (vì bạn đã không nói mà thư viện bạn đang sử dụng) Tôi sẽ đi ra và giới thiệu các HTTP module trong LuaSocket hoặc Luvit tuyệt vời (http://luvit.io).

0

Tôi biết rằng hơi muộn để trả lời câu hỏi nhưng tôi hy vọng điều này sẽ giúp ai đó sau này.

Nếu bạn muốn truy cập bột nhão riêng tư thô, trước tiên bạn sẽ cần liệt kê các bột nhão mà người dùng đã tạo. Đây là một phần của API. Điều này yêu cầu người dùng phải đăng nhập.

Với API này, bạn có thể liệt kê tất cả các bột nhão được tạo bởi một người dùng nhất định. Bạn sẽ cần phải gửi một yêu cầu POST hợp lệ vào URL dưới đây để truy cập dữ liệu :

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

Câu trả lời rằng bạn sẽ nhận được sẽ là một phản ứng XML, như sau:

<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> 

Khi bạn có, hãy phân tích cú pháp XML để có được paste_keypaste_private. Bạn cần kiểm tra giá trị của paste_private vì bạn chỉ muốn bột nhão riêng. Các tài liệu cho biết:

Chúng tôi có 3 giá trị hợp lệ có sẵn mà bạn có thể sử dụng với 'api_paste_private' tham số:

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) 

Vì vậy, nếu dán của bạn có paste_private thiết lập để 2, có được paste_key cho nó.

Khi bạn có số paste_key, hãy sử dụng cuộc gọi API để nhận được dán RAW. Không yêu cầu tên người dùng hoặc mật khẩu khi bạn có khóa dán để dán riêng tư.

Hãy vui vẻ!

1

Dưới đây là một ví dụ sẵn sàng của mã dành cho bạn:

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 
Các vấn đề liên quan