質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • C#

    7394questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • C

    3805questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3578questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

C# VisualStudio webbrowserでリファラーをセットする方法について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,226

fama

score 79

お読み頂きましてありがとうございます。
タイトルにもありますように、webbrowserにリファラーを設定してアクセスを行いたいのですが、下記のようにコードを書いたとしても実際にリファラーは反映されていない状態でした。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WebbrowserRefererTest
{
    public partial class Form1 : Form
    {
        [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
        private static extern int UrlMkSetSessionOption(int dwOption, string str, int nLength, int dwReserved);

        const string Url = "http://twiine.dousetsu.com/index1.html";
        public Form1()
        {
            const int URLMON_OPTION_USERAGENT = 0x10000001;
            string ua = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);

            InitializeComponent();
            webBrowser1.Navigate(Url, "", (byte[])null, "Referer: http://twiine.dousetsu.com/index1.html");
        }
    }
}

ninjaのアクセス解析ではこのように表示されています。
イメージ説明

リンク元不詳となるのですが、上記ではなぜリファラーが設定されないのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/03/26 09:10

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • fama

    2016/03/26 09:14

    このような質問はここではNGなのでしょうか?

    キャンセル

回答 2

checkベストアンサー

+1

横槍失礼。リファラとれてますね。設定できたっけかなぁと思いつつサンプルコード動かした結果です(URLは自分とこのサーバーに変更)。
サーバーの設定および、ninjaのアクセス解析の設定周りが怪しいかも?ですね。

リクエストヘッダ ダンプ結果

{ accept: '*/*',
  referer: 'http://twiine.dousetsu.com/index1.html',
  'accept-language': 'ja,en-US;q=0.8,en-GB;q=0.5,en;q=0.3',
  'accept-encoding': 'gzip, deflate',
  'user-agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0C; .NET4.0E;  .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)',
  host: 'localhost:8080',
  connection: 'Keep-Alive' }

参考資料

WebBrowser.Navigate メソッド (String, String, Byte[], String)

サンプル中の以下のコードはSystem.Windows.Forms.WebBrowserとは関連がないです。

[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
        private static extern int UrlMkSetSessionOption(int dwOption, string str, int nLength, int dwReserved);

~略
const int URLMON_OPTION_USERAGENT = 0x10000001;
string ua = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/27 19:29

    ご連絡頂きましてありがとうございます!
    >設定できたっけかなぁと思いつつサンプルコード動かした結果。(URLは自分とこのサーバーに変更)リファラとれてますね。
    との事ですが、これは私が上に記載しているコードを動かした結果出来たということでしょうか?

    キャンセル

  • 2016/03/27 19:37

    はい、その認識であってます。

    キャンセル

0

そもそもWebBrowser.Navigate メソッドでRefererを任意に設定できましたっけ?
もちろん動くのもあるってのは別にしてです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/27 06:50

    ご連絡ありがとうございます。
    調べてみると、多数そういった記事は出てくるので可能なのだと思いますが、まだ私の方が実際に実装出来ていないという状況です。

    >もちろん動くのもあるってのは別にしてです
    また、こちらはどういう意味でしょうか?
    同じ事を実装が出来ればどんな方法でも聞いてみたいのですが、よろしければアドバイス頂けると助かります。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7394questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • C

    3805questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3578questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。