2016-06-25 3 views
2
  • 私はPythonスクリプトからプログラムthis HTTP API endpointを行使しようとすると、サーバは通常(常にではない)400
  • このような応答が空のボディを持つ送信を生成し、 - なぜサーバーが私の要求を好まないのか分かりません。
  • 私は400を生成与えられたURLを取り、そして:
    • は、私は200を取得し、クロームに貼り付け!
    • ファイアウォールREPLを起動し、それをrequests.getにフィードすると、200が得られます!私はこれを "for loop"から繰り返し行い、常に200を得ることができます!
    • Chromeデバッグツールを開き、fetchメソッドを使用してリクエストすると、私は200を取得します。

詳細については、この主旨をチェックアウト:https://gist.github.com/stockninja/7b9bcbfc8f338da414ae9678ec98016d、ブラウザからの呼び出しは200

問題のスクリプトがmain.pyと呼ばれ、私は失敗しているものを理解するために作られたいくつかの試みの出力が含まれています。

私は何が失敗しているのか完全に迷っています!

+0

スクリプトでChromeまたはブラウザと同じプロキシを使用していますか?プロキシは問題を引き起こす傾向があります。特にプロキシが使用する前にログインする必要がある場合(企業ネットワークでは共通) –

+0

@GaneshR:私は意図的にスクリプトまたはブラウザのいずれかにプロキシを使用していません。私はMacを使用していますが、 "システム環境設定>ネットワーク>詳細>プロキシ"ではすべてがチェックされていません。私が意図しないプロキシを探すべき場所が分からない。 奇妙なことは、私はPython REPLからAPIを呼び出す200を得ることです。 – superquest

答えて

4

非常にシンプルなソリューション、プロキシとは何の関係も、あなたはユーザーエージェントを追加する必要があります。

def sync(): 
    head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} 
    all_urls = urls() 
    for url in all_urls: 
     res = requests.get(url, headers=head) 
     print(url) 
     print(res.json()) 

あなたが一度:

In [2]: sync() 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612737&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612737, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612738&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612738, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612751&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612751, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612766&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612766, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612741&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612741, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 
http://stats.nba.com/stats/teamgamelog?TeamID=1610612739&Season=2016-15&SeasonType=Regular+Season 
{'resource': 'teamgamelog', 'parameters': {'TeamID': 1610612739, 'Season': '2016-15', 'LeagueID': None, 'SeasonType': 'Regular Season'}, 'resultSets': [{'name': 'TeamGameLog', 'rowSet': [], 'headers': ['Team_ID', 'Game_ID', 'GAME_DATE', 'MATCHUP', 'WL', 'MIN', 'FGM', 'FGA', 'FG_PCT', 'FG3M', 'FG3A', 'FG3_PCT', 'FTM', 'FTA', 'FT_PCT', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']}]} 

などなど...... ..............

毎回400人がいなければ、リクエスト間の睡眠を考慮し、1日のレート制限/要求を調べることもできます。

+0

ありがとうございました!!!それはそれがとても単純なものだったと考えました。 – superquest

+0

いいえ、常にu-aを使用することをお勧めします。 –

関連する問題