Skip to content

Commit d4565ac

Browse files
committed
Markets widget rate limit fix
1 parent 16129c5 commit d4565ac

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

internal/glance/widget-markets.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func fetchMarketsDataFromYahoo(marketRequests []marketRequest) (marketList, erro
124124

125125
for i := range marketRequests {
126126
request, _ := http.NewRequest("GET", fmt.Sprintf("https://query1.finance.yahoo.com/v8/finance/chart/%s?range=1mo&interval=1d", marketRequests[i].Symbol), nil)
127+
setBrowserUserAgentHeader(request)
127128
requests = append(requests, request)
128129
}
129130

internal/glance/widget-utils.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ import (
88
"errors"
99
"fmt"
1010
"io"
11+
"math/rand/v2"
1112
"net/http"
13+
"strconv"
1214
"sync"
15+
"sync/atomic"
1316
"time"
1417
)
1518

@@ -35,8 +38,15 @@ type requestDoer interface {
3538
Do(*http.Request) (*http.Response, error)
3639
}
3740

41+
var userAgentPersistentVersion atomic.Int32
42+
3843
func setBrowserUserAgentHeader(request *http.Request) {
39-
request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0")
44+
if rand.IntN(2000) == 0 {
45+
userAgentPersistentVersion.Store(rand.Int32N(5))
46+
}
47+
48+
version := strconv.Itoa(130 + int(userAgentPersistentVersion.Load()))
49+
request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:"+version+".0) Gecko/20100101 Firefox/"+version+".0")
4050
}
4151

4252
func decodeJsonFromRequest[T any](client requestDoer, request *http.Request) (T, error) {

0 commit comments

Comments
 (0)