返回
如何在 Reddit 上巧妙绕过限制修改评论文本?
javascript
2024-03-22 02:53:00
如何在 Reddit 上巧妙修改评论文本
问题概述
在 Reddit 评论表单中修改文本是一个棘手的难题。尝试使用 JavaScript 直接修改文本会令人沮丧地发现,文本纹丝不动。这背后的原因是什么?
安全屏障:Reddit 的 CSP
Reddit 为其网站实施了严格的内容安全策略 (CSP)。此策略就像一个门卫,控制着网站上允许运行的脚本类型。它阻止脚本修改评论表单中的 DOM 元素,有效地阻止了直接文本修改。
绕过 CSP 的妙招
既然直接修改评论文本被阻止了,我们必须寻找迂回的方法。有两种可行的解决方法:
1. Reddit API:
使用 Reddit API 创建或编辑评论可以绕过 CSP 限制。只需获取 API 令牌,然后使用 POST
端点创建包含所需文本的新评论或编辑现有评论。
2. 浏览器扩展:
通过开发一个 Chrome 扩展,我们可以在评论表单提交时拦截并修改数据。扩展可以监听提交事件,修改表单数据,然后通过 Reddit API 将其提交。
代码示例:
使用 Reddit API:
// 获取 API 令牌
const token = await getToken();
// 创建评论
const response = await fetch(`https://oauth.reddit.com/api/comment`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
api_type: 'json',
thing_id: `t3_${post}`,
subreddit,
text,
}),
});
使用浏览器扩展:
// 拦截表单提交
chrome.pageAction.onClicked.addListener(function (tab) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: interceptForm,
});
});
// 修改表单数据
function interceptForm() {
const textArea = document.querySelector('textarea[name="text"]');
textArea.value = 'Modified text';
form.submit();
}
结论
虽然直接修改 Reddit 评论表单文本受限于 CSP,但通过利用 Reddit API 或浏览器扩展,我们仍然可以实现所需的文本修改。这些技巧为 Reddit 用户提供了在评论中表达自己的灵活性,同时保持网站的安全和完整性。
常见问题解答:
-
为什么 Reddit 实施了 CSP?
- 为了防止恶意行为和确保网站安全。
-
除了 API 和浏览器扩展,还有其他修改 Reddit 评论文本的方法吗?
- 没有,直接修改 DOM 元素被 CSP 阻止。
-
浏览器扩展方法是否安全?
- 只要扩展是从信誉良好的来源获得的,它就是安全的。
-
这些方法可以用于所有 Reddit 子版块吗?
- 是的,这些方法适用于所有允许评论的子版块。
-
修改 Reddit 评论文本是否违反 Reddit 的服务条款?
- 只要不滥用,修改评论文本本身并不违反服务条款。