簡體   English   中英

如何使用密碼從 Pastebin 獲取原始數據?

[英]How to get a raw data from Pastebin with password?

我想使用 python 的某個鎖定的 pastebin 鏈接的密碼獲取原始數據。我不知道該怎么做。

使用python的requests模塊和post方法獲取pastebin原始數據是不可能的嗎? 我按照下面的代碼嘗試了它,但它返回錯誤。

url = "https://pastebin.com/URL"
pass_data = {'PostPasswordVerificationForm[password]': 'password'}
res = requests.post(url, headers=headers, data = pass_data) 
text = res.text
print(text)  

它返回以下錯誤:

raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='pastebin.com', port=443): 
Max retries exceeded with url: /URL (Caused by SSLError(SSLCertVerificationError
(1, '[SSL: CERTIFICATE_VERIFY_FAILED]certificate verify failed: 
self signed certificate in certificate chain (_ssl.c:1123)')))

有人可以告訴我我可以使用哪個嗎?

注意:考慮使用Pastebin 的 APIPastebin 的抓取 API

您的證書驗證失敗(proxy/tor/vpn/web without cert/misconfigured web?)。 如果您仍想繼續,只需使用verify=False作為requests.post()的參數:

requests.post(url="...", verify=False)

如果您使用的是 VPN,也許已經為您的機器提供了根證書,您可以使用cert=("path to cert", "path to key")來應用它。

如果您使用的是 Tor,最好跳過該電路並重新創建一個新電路。

對於代理,它很復雜,可能是證書問題,也可能只是配置錯誤/損壞。

您可以通過檢查您的網絡會話(特定於操作系統)和環境變量requests package 來驗證沒有使用代理:

  • http_proxy
  • HTTP_PROXY
  • https_proxy
  • HTTPS_PROXY
  • curl_ca_bundle

編輯:我剛剛重新檢查了 Pastebin,RAW 文本選項僅適用於未受保護的粘貼。 但是,您可以通過檢查流量獲得 HTML 版本,然后只需保留 session,檢查 cookies 和 .network 選項卡中的標頭,即可使用代碼重新組裝它。 你應該得到這樣的東西:

import requests as r
ses = r.Session()
cookie = ses.get("https://pastebin.com").cookies["_csrf-frontend"]
# The missing step here is reworking the provided CSRF by client-side
# JS which is "hidden" in the minified jquery.min.js (or at least the
# `POST` is issued by it). Once you have it, you can put it to the
# data field
print(ses.post(
    url='https://pastebin.com/<your paste>',
    headers={
        'User-Agent': "<user agent to spoof it's via Requests>",
        'Accept': (
            'text/html'
            ',application/xhtml+xml'
            ',application/xml'
            ';q=0.9,image/webp,*/*;q=0.8'
        ),
        'Accept-Language': 'en-US,en;q=0.5',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    data=(
        '_csrf-frontend=<JS-manipulated CSRF value>'
        '&is_burn=1'
        '&PostPasswordVerificationForm%5Bpassword%5D=<pass>'
    )
).text)

之后只需檢查其中包含RAW的標簽,然后通過一些快速正則表達式(強制性的“這是一個愚蠢的想法”帖子)或使用不太容易出錯的解決方案(例如BeautifulSoup )對其進行解析。

盡管如此,驗證碼、IP 黑名單、“聰明”的 CSRF 處理和類似的東西最終會阻止你進行這種抓取,如果不是這樣的話,組裝一個應用程序太容易了,它會動態地改變 Angular 中的 class 名稱、標簽名稱等,只是為了搞砸用你的 lulz 抓取(谷歌文檔喜歡這個東西,個人經驗),所以如果你打算用它做一些嚴肅的事情,只需使用 API。

Edit2:關於抓取的小常見問題解答/為什么要使用 API

  • 如果該網站在其 ToS 中不允許抓取或禁止抓取,則您不應該這樣做。 盡管人們大多忽略它,但從非匿名設備/IP 進行操作並不明智,特別是如果有從中賺錢的想法,因為人們開始尋找(甚至是合法的)。
  • 不,Tor 將無法工作,尤其是因為它一旦進入其中就充滿了驗證碼。
  • 是的,任何至少能夠閱讀服務器日志的人都可以弄清楚你將要做什么,並通過 IP、用戶代理或只是通過提供隨機數據來擾亂你(這樣做很有趣)稍后的流量日志:D)
  • 是的,甚至可以阻止 VPN 和代理,就像使用 Tor 一樣,只有它們會記錄活動並讓您付費
  • 一旦 Pastebin 更改了抓取流的任何部分,您就可以從頭開始重新發明它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM