[英]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 的 API和Pastebin 的抓取 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.