私は、C#プログラム(nseindia.com)を使用してサイトからデータを取得するために使用しましたが、最近、NSEはプログラムからのリクエストに「403禁止されたエラー」が返されるようにいくつかの変更を行いました。誰でもプログラムからの要求をブラウザからの要求と同じにする方法を教えてもらえますか?私はuserAgentプロパティを設定しようとしましたが、動作していません。コードは下に貼り付けられます。HttpWebRequest対ブラウザリクエスト
string DownloadData(string CompanyName)
{
string address = string.Format(@"http://www.nseindia.com");
//http://www.nseindia.com/marketinfo/sym_map/symbolMapping.jsp?dataType=priceVolumeDeliverable&symbol=abb&
//http://www.nseindia.com/content/equities/scripvol/datafiles/01-12-2008-TO-29-12-2010ABBALLN.csv
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3
string strData = "";
try
{
request.Proxy = WebProxy.GetDefaultProxy();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
System.IO.Stream stream = response.GetResponseStream();
System.Text.Encoding ec = System.Text.Encoding.GetEncoding("utf-8");
System.IO.StreamReader reader = new System.IO.StreamReader(stream, ec);
strData = reader.ReadToEnd();
if (strData.Contains("Error"))
{
Exception e = new Exception(strData);
throw e;
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
return strData;
}
別のWebサイト(たとえば、http://www.google.comなど)で別のURLをリクエストしようとしましたか?たぶん企業ポリシーが変更され、プロキシを使用せずに直接HTTPリクエストを行うことは許可されていない可能性があります。 –
はい、私はそれがうまくいったGoogleを試みた。クイック返信ありがとうございます。 – Martin