回答編集履歴

1

追記

2022/11/03 23:13

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -1,3 +1,24 @@
1
+ いくつか誤解があるようなので指摘を。
2
+
3
+ http.HandleFunc(...)はHTTPサーバー用の機能であって、クライアント側でこれを実行する意味はありません。
4
+ http.SetCookie(...)もサーバーがクライアントに返すレスポンスにCookieをセットする処理でGoによるHTTPクライアントとしては何も影響はないです。
5
+
1
6
  http.Getはcookieやヘッダーを極力付与しないHTTPクライアントですので、
2
7
  これを使っている限り取得したcookieをサーバーに送ることはありません。
8
+ HTTPリクエストにヘッダーやCookieを乗せる方法は以下の機能を利用します。
3
9
 
10
+ https://pkg.go.dev/net/http/cookiejar#example-New
11
+ https://pkg.go.dev/net/http#Client.Do
12
+
13
+ この状況から進めるならブラウザのデバッガ機能でHTTPヘッダーの内容が
14
+ 目的のページが表示されるまでに
15
+ どのように「クライアントからサーバー」に
16
+ 「サーバーからクライアント」にヘッダーの内容をよく観測してみてください。
17
+ そして自作のクライアントの送るヘッダー、受けたヘッダーを表示して同じになっているか確認しましょう。
18
+
19
+ また、これらを一通りクリアしてもログイン後のページが見れない場合という状況もあり得ます。
20
+ それはサーバー側が何らかの理由でロボットによる情報取得を制限していることがあるからです。
21
+ それもやはり観察と自身で作ったクライアントプログラムのやろうとすることの違いを見つけるしか対策はありません。
22
+ (いちばんシンプルな事例はUser-Agentの違いとか)
23
+ ただこのあたりはブラックボックスとの戦いになるのでやみくもにやり始めると全く目的を果たせず時間がかかってしまいます。
24
+ まずは前述の前半戦をクリアすることが重要です。