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