Пришлось мне на днях писать парсер для одного известного сайта, и возникла проблема, сайт периодически блокировал меня, не давая нормально отпарсить их контент. В процессе анализа выяснил, что идёт проверка по связке User-Agent плюс IP адрес. Под катом находится пример того, как можно отправить запрос с изменённым User-Agent‘ом, да и вообще с любым хедером используя стандартный пакет net/http из языка программирования GO.

package main

import (
        "io/ioutil"
        "log"
        "net/http"
)

func main() {
        client := &http.Client{}

        req, err := http.NewRequest("GET", "http://httpbin.org/user-agent", nil)
        if err != nil {
                log.Fatalln(err)
        }

        req.Header.Set("User-Agent", "Golang Spider Bot v. 3.0")

        resp, err := client.Do(req)
        if err != nil {
                log.Fatalln(err)
        }

        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
                log.Fatalln(err)
        }

        log.Println(string(body))

}

В результате мы получим следующий ответ:

2012/11/07 15:05:47 {
  "user-agent": "Golang Spider Bot v. 3.0"
}

Так же рекомендую OpenSource сервис httbin.org при отладке ваших приложений, которые работают с http протоколом. Если нужно добавить что-то своё, то можно сделать форк от них на GitHub.

Комментарии

comments powered by Disqus