【问题标题】:Python post requests causing 403 ErrorPython post请求导致403错误
【发布时间】:2015-12-24 04:02:16
【问题描述】:

我目前在为 instagram 发出帖子请求时使用 requests python libraray 时遇到 403 错误。

我正在尝试使用“https://www.instagram.com/web/friendships/2663753/follow/”URL 来关注用户,该 URL 从网络页面的检查元素中获取。 这需要 POST 请求。

Remote Address:31.13.77.52:443
Request URL:https://www.instagram.com/web/friendships/313746262/unfollow/
Request Method:POST
Status Code:200 OK
Response Headers
view source
Cache-Control:private, no-cache, no-store, must-revalidate
Connection:keep-alive
Content-Language:en
Content-Length:15
Content-Type:application/json
Date:Thu, 24 Dec 2015 03:58:08 GMT
Expires:Sat, 01 Jan 2000 00:00:00 GMT
Pragma:no-cache

Strict-Transport-Security:max-age=86400
Vary:Cookie, Accept-Language
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0

Host:www.instagram.com
Origin:https://www.instagram.com
Referer:https://www.instagram.com/darealbre/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
X-CSRFToken:9776e6b7b249da6bd12397ef21a11928
X-Instagram-AJAX:1
X-Requested-With:XMLHttpRequest

我已经传入了我的 cookie,这是我的代码。

cookies_list = {'target_sig': '', 'ig_pr': '1', 'target': '', 'mid': 'VnttxgAEAAGrb1koHc8WHSK0qeyk', 'ds_user_id': '2352930331', 'sessionid': 'IGSC616b97e4de9eaabee722cb3b0c3758232253dcbea19983ea8ae7b52b1d2b9486%3AgBJyWG66Wqx3ZhebzN6mJ6ydhzPzlrcr%3A%7B%22_token_ver%22%3A2%2C%22_auth_user_id%22%3A2352930331%2C%22_token%22%3A%222352930331%3AEhfw99oCaIp8a6TiOjbbSHhzg6QwfV54%3Ab645bc518c898fc02c06911e79c531475c5c9f5b3fbbac054281ea6bfe0adb7d%22%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%2C%22last_refreshed%22%3A1450929608.312806%2C%22_platform%22%3A4%7D', 'ig_vw': '1680', 'csrftoken': '28de9e973017aae25868be36e0f2fffa', 's_network': ''}

    headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36','X-CSRFToken':'9776e6b7b249da6bd12397ef21a11928','Cookie'}
    post_requests = requests.post('https://www.instagram.com/web/friendships/2663753/follow/',cookies=cookies_list,headers=headers)

我在登录 Instagram 后立即获得了 cookie。但是它一直返回给我 403 错误!

使用 CURL,我将 CURL 命令粘贴到终端中,它跟随用户!

"curl 'https://www.instagram.com/web/friendships/330108492/follow/' -X POST -H 'Cookie: mid=VnnkDAAEAAGX-EXpxDkSsYIpk3n6; fbm_124024574287414=base_domain=.instagram.com; sessionid=IGSC88d8406c0f8996d4356abddcd986235bac1dc969a6604d8c9a205e39b95286d0%3AOGn68bqGJmIXQqLvq0i9eFbPmATqZkl5%3A%7B%22_token_ver%22%3A2%2C%22_auth_user_id%22%3A2352930331%2C%22_token%22%3A%222352930331%3A6DxouHjZAEq73UIarTseawN0uq8oKpLq%3Aba8a7b0655113764a9c768a62a9da856d7894686af3c6d50356d8819ad7caa52%22%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%2C%22last_refreshed%22%3A1450918827.64184%2C%22_platform%22%3A4%7D; ig_pr=1; ig_vw=1855; s_network=; csrftoken=9776e6b7b249da6bd12397ef21a11928; ds_user_id=2352930331; fbsr_124024574287414=Pv5CMlvyUnfLDZIM9oQibeNkRRGNlwu7JUEO9mtdyFs.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUUI4d281MW8xc09HVnV3RGlLcWpsYkhVQWlqUUdmWXpBc2YwTFo2WTZQR19iV2dQeGs4N3gwaHNId1NzTkh2Mi1WSUFleTlIajRrOEp2QXl4SnhuZzZYUjF1MGJBXzh4c1IyRndWWW0xLTRoMkczdlpQYnExSnk5bVpsT3NZSnpCUmF2UjZpbmx0bjBaZU0zZTlFTnRxaTd0V1BwVUhGbmw4aGM4R1ZSbU5DRElFQmN2MkQ4LVVQa3BIVmtGRDRJeGNsQ0JWOVQtcG1xNGVIcWlYcWZIeE1jVTNKRU5kaUkyUUR0bUdabzVXSGxMY0xvV2Y0TlNoU3RwQmMwS2dmM0VFYTVmQ3JSWGFNMGtwdzhiZEpKMjN3dG8xSmd5b2RYS0RkU080UnBkSC1VNXJBTkgtbXI5Umhja2gzTzNJU2ZvRGxBVnBfVnZhWld6b2dQZXVhNGh6NSIsImlzc3VlZF9hdCI6MTQ1MDkzOTU1NiwidXNlcl9pZCI6IjEwMDAwMDgyMDI2MDE2MiJ9' -H 'Origin: https://www.instagram.com' -H 'Accept-Encoding: gzip, deflate' -H 'X-Instagram-AJAX: 1' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36' -H 'Accept-Language: en-US,en;q=0.8' -H 'Accept: */*' -H 'Referer: https://www.instagram.com/struckbyfashion/' -H 'X-CSRFToken: 9776e6b7b249da6bd12397ef21a11928' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Content-Length: 0' --compressed" 

这是我的 curl 返回信息

【问题讨论】:

  • 你的网址显示unfollow,不是follow,而是403表示禁止。因此,也许您需要一个 API 密钥来执行此操作。
  • 我的建议是使用“Chrome 开发工具”,并在发出请求后右键单击“关注”请求。点击“复制为卷曲请求”,将其粘贴到某处并分析它以查看您做错了什么。
  • @Dan 不,这与 API 无关。我在谷歌上查询了这个问题,大部分答案主要是由于被禁止访问。我正在传递 cookie,正确传递标头不幸的是,这些似乎都不适合我。
  • @martin 这没有帮助,因为我已经这样做了!
  • 如果 curl 请求在您从终端运行时有效,但您的 python 请求无效,那么您做错了。

标签: python http cookies python-requests


【解决方案1】:

所以首先你不应该发布你的 cookie,因为它让这里的任何人都可以访问你的 instagram 帐户。确保您尽快注销以使该 cookie 无效,然后再次登录并将该 cookie 保密。

其次,不要同时使用cookies_list。只需将所有内容作为标题传递如下:

headers = {
    'Cookie': '<Paste Everything in the Curl "Cookie" header here>',
    'Origin': 'https://www.instagram.com',
    'Accept-Encoding': 'gzip, deflate',
    'X-Instagram-AJAX': 1,
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36,(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36',
    'Accept-Language': 'en-US,en;q=0.8',
    'Accept': '*/*',
    'Referer': 'https://www.instagram.com/struckbyfashion/',
    'X-CSRFToken': '9776e6b7b249da6bd12397ef21a11928',
    'X-Requested-With': 'XMLHttpRequest',
    'Connection': 'keep-alive',
    'Content-Length': 0
}

post_requests = requests.post('https://www.instagram.com/web/friendships/2663753/follow/', headers=headers)
print(post_requests.text)  # {"status":"ok"}
print(post_requests.status_code)  # 200

【讨论】:

  • 嘿伙计,确实问过你说我实际上遇到了同样的错误。它仍然显示 403!
  • 它将正常工作。如果您注销,请确保您使用的是新会话中的 cookie。确保也使用新的 csrf 令牌
  • {"status":"fail","message":"unauthorized","re​​direct_url":"\/accounts\/login\/?next=\/web\/friendships\/3931765 \/关注\/"} 403
  • 我目前正忙于从一个 Url 获取 X-CSRFToken 和 cookie 并使用请求将其传递给另一个!
  • 好的,详细说明我的问题。我有两个 URL - 登录后,我会存储我的 cookie 以供将来请求。但是,我不知道如何使用所有这些信息访问请求标头数据,例如 cookie、X-CSRFToken、X-Requested-。所以我有多个我想关注的帐户,它们都有不同的 cookie/csrftoken。所以我想知道如何将这些放在我的请求中,以便它们通过!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2018-08-13
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多