簡體   English   中英

如何修復 Forbidden: received 403 HTTP response in praw?

[英]How to fix the Forbidden: received 403 HTTP response in praw?

我想在reddit上收集一些帖子的標題來做分析。 通過不斷調試我的代碼,我可以得到一些帖子的標題。 突然我在嘗試使用 PRAW 收集帖子時收到了 Forbidden 403。 網上的解釋是:“絕對禁止訪問您試圖訪問的頁面或資源。換句話說,403 錯誤意味着您無權訪問您試圖查看的任何內容”。 請告訴我我該怎么做。 謝謝

嘗試添加一些標題並使用時間延遲

url="https://www.reddit.com"

my_headers=["Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html",
"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"
]

def get_content(url,headers):

    randdom_header=random.choice(headers)

    req=urllib.Request(url)
    req.add_header("User-Agent",randdom_header)           
    req.add_header("Host","www.reddit.com")
    req.add_header("Referer","https://www.reddit.com")
    req.add_header("GET",url)

    content=urllib.urlopen(req).read()
    return content

print (get_content(url,my_headers))

所以,我曾經經常遇到這個問題,無論我在哪里搜索,我都沒有發現“修復”本身。 解決問題的最簡單方法是捕獲錯誤,然后對其進行處理。 見下文。

首先,我想你需要導入正確的“錯誤”。 (我不知道怎么說)

from prawcore.exceptions import Forbidden

然后,您可以嘗試返回我們的Forbidden錯誤。 使用try:執行此操作。 我們的代碼應該是這樣的:

from prawcore.exceptions import Forbidden

try:
    comment.reply("I can comment here!")

在這里,我們嘗試對一些(在我們的例子中)虛構的評論對象發表評論,如果我們被允許發表評論,即沒有被 reddit 或這個 sub 禁止,那么回復將成功“發送”。 如果不是這種情況,我們將收到可怕的(在我們的例子中) prawcore.exceptions.Forbidden: received 403 HTTP response

要解決這個問題,我們只需要except xxx:我們的錯誤。 這看起來像except Forbidden: 如果我們被禁止采取某種行動,我們就可以做一些事情。 我們的最終代碼如下所示:

#importing our error
from prawcore.exceptions import Forbidden

#trying to comment (we may be banned)
try:
    comment.reply("I can comment here!")

#doing something if we can't comment
except Forbidden:
   print(f"We\'ve been banned on r/{comment.subreddit}!"

我希望這會有所幫助,我很樂意進一步詳細說明!

就像為你們中的一些人找到問題根源的補充一樣,我遇到了這個問題,因為我試圖連接的 subreddit 已經私有化了。

所以我的建議是首先檢查您連接的 subreddit 是否允許機器人設置的帳戶訪問該 subreddit。

我認為第一個答案對如何以編程方式處理它給出了很好的回應。

暫無
暫無

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

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