|
| 1 | +go-ip-fraud-check |
| 2 | +---- |
| 3 | + |
| 4 | +[![License: MIT][401]][402] [![GoDoc][101]][102] [![Release][103]][104] [![Build Status][201]][202] [![Coveralls Coverage][203]][204] [![Codecov Coverage][205]][206] |
| 5 | +[![Go Report Card][301]][302] [![Code Climate][303]][304] [![BCH compliance][305]][306] [![CodeFactor][307]][308] [![codebeat][309]][310] [![Scrutinizer Code Quality][311]][312] [![FOSSA Status][403]][404] |
| 6 | + |
| 7 | + |
| 8 | +<!-- Basic --> |
| 9 | + |
| 10 | +[101]: https://godoc.org/github.com/evalphobia/go-ip-fraud-check?status.svg |
| 11 | +[102]: https://godoc.org/github.com/evalphobia/go-ip-fraud-check |
| 12 | +[103]: https://img.shields.io/github/release/evalphobia/go-ip-fraud-check.svg |
| 13 | +[104]: https://github.com/evalphobia/go-ip-fraud-check/releases/latest |
| 14 | +[105]: https://img.shields.io/github/downloads/evalphobia/go-ip-fraud-check/total.svg?maxAge=1800 |
| 15 | +[106]: https://github.com/evalphobia/go-ip-fraud-check/releases |
| 16 | +[107]: https://img.shields.io/github/stars/evalphobia/go-ip-fraud-check.svg |
| 17 | +[108]: https://github.com/evalphobia/go-ip-fraud-check/stargazers |
| 18 | + |
| 19 | + |
| 20 | +<!-- Testing --> |
| 21 | + |
| 22 | +[201]: https://github.com/evalphobia/go-ip-fraud-check/workflows/test/badge.svg |
| 23 | +[202]: https://github.com/evalphobia/go-ip-fraud-check/actions?query=workflow%3Atest |
| 24 | +[203]: https://coveralls.io/repos/evalphobia/go-ip-fraud-check/badge.svg?branch=master&service=github |
| 25 | +[204]: https://coveralls.io/github/evalphobia/go-ip-fraud-check?branch=master |
| 26 | +[205]: https://codecov.io/gh/evalphobia/go-ip-fraud-check/branch/master/graph/badge.svg |
| 27 | +[206]: https://codecov.io/gh/evalphobia/go-ip-fraud-check |
| 28 | + |
| 29 | + |
| 30 | +<!-- Code Quality --> |
| 31 | + |
| 32 | +[301]: https://goreportcard.com/badge/github.com/evalphobia/go-ip-fraud-check |
| 33 | +[302]: https://goreportcard.com/report/github.com/evalphobia/go-ip-fraud-check |
| 34 | +[303]: https://codeclimate.com/github/evalphobia/go-ip-fraud-check/badges/gpa.svg |
| 35 | +[304]: https://codeclimate.com/github/evalphobia/go-ip-fraud-check |
| 36 | +[305]: https://bettercodehub.com/edge/badge/evalphobia/go-ip-fraud-check?branch=master |
| 37 | +[306]: https://bettercodehub.com/ |
| 38 | +[307]: https://www.codefactor.io/repository/github/evalphobia/go-ip-fraud-check/badge |
| 39 | +[308]: https://www.codefactor.io/repository/github/evalphobia/go-ip-fraud-check |
| 40 | +[309]: https://codebeat.co/badges/142f5ca7-da37-474f-9264-f708ade08b5c |
| 41 | +[310]: https://codebeat.co/projects/github-com-evalphobia-go-ip-fraud-check-master |
| 42 | +[311]: https://scrutinizer-ci.com/g/evalphobia/go-ip-fraud-check/badges/quality-score.png?b=master |
| 43 | +[312]: https://scrutinizer-ci.com/g/evalphobia/go-ip-fraud-check/?branch=master |
| 44 | + |
| 45 | +<!-- License --> |
| 46 | +[401]: https://img.shields.io/badge/License-MIT-blue.svg |
| 47 | +[402]: LICENSE.md |
| 48 | +[403]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fevalphobia%2Fgo-ip-fraud-check.svg?type=shield |
| 49 | +[404]: https://app.fossa.com/projects/git%2Bgithub.com%2Fevalphobia%2Fgo-ip-fraud-check?ref=badge_shield |
| 50 | + |
| 51 | + |
| 52 | +go-ip-fraud-check has a feature to detect fraud from ip addresss. |
| 53 | + |
| 54 | +go-ip-fraud-check provides both of cli binary and golang API. |
| 55 | + |
| 56 | +# Supported Providers |
| 57 | + |
| 58 | +- [ipdata.co](https://ipdata.co/) |
| 59 | +- [ipinfo.io](https://ipinfo.io/) |
| 60 | +- [MaxMind minFraud](https://www.maxmind.com/en/solutions/minfraud-services/) |
| 61 | + |
| 62 | +# Quick Usage for binary |
| 63 | + |
| 64 | +## install |
| 65 | + |
| 66 | +Download binary from release page, or build from source: |
| 67 | + |
| 68 | +```bash |
| 69 | +$ git clone --depth 1 https://github.com/evalphobia/go-ip-fraud-check.git |
| 70 | +$ cd ./go-ip-fraud-check/cmd |
| 71 | +$ go build -o ./go-ip-fraud-check . |
| 72 | +``` |
| 73 | + |
| 74 | +## Subcommands |
| 75 | + |
| 76 | +### root command |
| 77 | + |
| 78 | +```bash |
| 79 | +$ go-ip-fraud-check |
| 80 | +Commands: |
| 81 | + |
| 82 | + help show help |
| 83 | + single Exec api call of ip address fraud check providers for single ip |
| 84 | + list Exec api call of ip address fraud check providers from csv list file |
| 85 | +``` |
| 86 | + |
| 87 | +### single command |
| 88 | + |
| 89 | +`single` command is used to check single ip address. |
| 90 | + |
| 91 | +```bash |
| 92 | +./go-ip-fraud-check single -h |
| 93 | + |
| 94 | +Exec api call of ip address fraud check providers for single ip |
| 95 | + |
| 96 | +Options: |
| 97 | + |
| 98 | + -h, --help display help information |
| 99 | + -p, --provider *set types of api provider (space separated) --provider='ipdata ipinfo minfraud' |
| 100 | + -i, --ip input ip address --ip='8.8.8.8' |
| 101 | + --debug set if you need verbose logs --debug |
| 102 | +``` |
| 103 | +
|
| 104 | +For example, you can check ip address like below |
| 105 | +
|
| 106 | +```bash |
| 107 | +# set auth data |
| 108 | +$ export FRAUD_CHECK_IPDATACO_APIKEY=xxx |
| 109 | +$ export FRAUD_CHECK_IPINFOIO_TOKEN=yyy |
| 110 | + |
| 111 | +# check ip address |
| 112 | +$ ./go-ip-fraud-check single -p 'ipdata ipinfo' -i 8.8.8.8 |
| 113 | + |
| 114 | +2021/10/25 00:54:26 [INFO] [INFO] Use ipdata.co |
| 115 | +2021/10/25 00:54:26 [INFO] [INFO] Use ipinfo.io |
| 116 | +{"list":[{"service_name":"ipdata.co","ip":"8.8.8.8","hostname":"","isp":"Google LLC","organization":"","asn":15169,"risk_score":0,"is_anonymous":false,"is_anonymous_vpn":false,"is_hosting":false,"is_proxy":false,"is_tor":false,"is_bot":false,"is_bogon":false,"has_other_threat":false,"country":"US","city":"","region":"","latitude":0,"longitude":0,"error":""},{"service_name":"ipinfo.io","ip":"8.8.8.8","hostname":"dns.google","isp":"","organization":"Google LLC","asn":15169,"risk_score":0,"is_anonymous":false,"is_anonymous_vpn":false,"is_hosting":false,"is_proxy":false,"is_tor":false,"is_bot":false,"is_bogon":false,"has_other_threat":false,"country":"US","city":"Mountain View","region":"California","latitude":37.4056,"longitude":-122.0775,"error":""}]} |
| 117 | +``` |
| 118 | +
|
| 119 | +### list command |
| 120 | +
|
| 121 | +`list` command is used to check multiple ip address from list and save results to output file. |
| 122 | +
|
| 123 | +```bash |
| 124 | +./go-ip-fraud-check list -h |
| 125 | +Exec api call of ip address fraud check providers from csv list file |
| 126 | + |
| 127 | +Options: |
| 128 | + |
| 129 | + -h, --help display help information |
| 130 | + -p, --provider *set types of api provider (space separated) --provider='ipdata ipinfo minfraud' |
| 131 | + -i, --input *input csv/tsv file path --input='./input.csv' |
| 132 | + -o, --output *output tsv file path --output='./output.tsv' |
| 133 | + --debug set if you use HTTP debug feature --debug |
| 134 | +``` |
| 135 | +
|
| 136 | +For example, you can check ip address from csv list like below |
| 137 | +
|
| 138 | +```bash |
| 139 | +# set auth data |
| 140 | +$ export FRAUD_CHECK_IPDATACO_APIKEY=xxx |
| 141 | +$ export FRAUD_CHECK_IPINFOIO_TOKEN=yyy |
| 142 | + |
| 143 | +# prepare CSV file |
| 144 | +$ cat input.csv |
| 145 | +ip_address |
| 146 | +8.8.8.8 |
| 147 | +8.8.4.4 |
| 148 | +1.1.1.1 |
| 149 | + |
| 150 | + |
| 151 | +# check risk from the CSV file |
| 152 | +$ ./go-ip-fraud-check list -p 'ipdata ipinfo' -i ./input.csv -o ./output.tsv |
| 153 | +2021/10/25 00:58:29 [INFO] [INFO] Use ipdata.co |
| 154 | +2021/10/25 00:58:29 [INFO] [INFO] Use ipinfo.io |
| 155 | +2021/10/25 00:58:30 [INFO] exec #: [2] |
| 156 | +2021/10/25 00:58:29 [INFO] exec #: [0] |
| 157 | +2021/10/25 00:58:31 [INFO] exec #: [1] |
| 158 | + |
| 159 | +$ cat output.tsv |
| 160 | +service ip_address hostname risk_score isp organization asn country city region latitude longitude is_anonymous is_anonymous_vpn is_hosting is_proxy is_tor is_bot is_bogon has_other_threat |
| 161 | +ipdata.co 8.8.8.8 0.00000 Google LLC 15169 US 0.00000 0.00000 false false false false false false false false |
| 162 | +ipinfo.io 8.8.8.8 dns.google 0.00000 Google LLC 15169 US Mountain View California 37.40560 -122.07750 false false false false false false false false |
| 163 | +ipdata.co 8.8.4.4 0.00000 Google LLC 15169 US 0.00000 0.00000 false false false false false false false false |
| 164 | +ipinfo.io 8.8.4.4 dns.google 0.00000 Google LLC 15169 US Mountain View California 37.40560 -122.07750 false false false false false false false false |
| 165 | +ipdata.co 1.1.1.1 0.00000 Cloudflare, Inc. 13335 AU 0.00000 0.00000 false false false false false false false false |
| 166 | +ipinfo.io 1.1.1.1 one.one.one.one 0.00000 Cloudflare, Inc. 13335 US San Francisco California37.76210 -122.39710 false false true false false false false false |
| 167 | +``` |
| 168 | +
|
| 169 | +# Quick Usage for API |
| 170 | +
|
| 171 | +```go |
| 172 | +package main |
| 173 | + |
| 174 | +import ( |
| 175 | + "fmt" |
| 176 | + |
| 177 | + "github.com/evalphobia/go-ip-fraud-check/ipfraudcheck" |
| 178 | + "github.com/evalphobia/go-ip-fraud-check/provider" |
| 179 | + "github.com/evalphobia/go-ip-fraud-check/provider/ipdataco" |
| 180 | + "github.com/evalphobia/go-ip-fraud-check/provider/ipinfoio" |
| 181 | +) |
| 182 | + |
| 183 | +func main() { |
| 184 | + conf := ipfraudcheck.Config{ |
| 185 | + // you can set auth values to config directly, otherwise used from environment variables. |
| 186 | + IPdatacoAPIKey: "<your ipdata.co API key>", |
| 187 | + IPinfoioToken: "<your ipinfo.io API token>", |
| 188 | + Debug: false, |
| 189 | + } |
| 190 | + |
| 191 | + svc, err := ipfraudcheck.New(conf, []provider.Provider{ |
| 192 | + &ipdataco.IPdatacoProvider{}, |
| 193 | + &ipinfo.IPinfoioProvider{}, |
| 194 | + }) |
| 195 | + if err != nil { |
| 196 | + panic(err) |
| 197 | + } |
| 198 | + |
| 199 | + // execute score API |
| 200 | + resp, err := svc.CheckIP("8.8.8.8") |
| 201 | + if err != nil { |
| 202 | + panic(err) |
| 203 | + } |
| 204 | + |
| 205 | + for _, r := range resp.List { |
| 206 | + // just print response in json format |
| 207 | + b, _ := json.Marshal(r) |
| 208 | + fmt.Printf("%s", string(b)) |
| 209 | + } |
| 210 | +} |
| 211 | +``` |
| 212 | +
|
| 213 | +see example dir for more examples. |
| 214 | +
|
| 215 | +
|
| 216 | +# Environment variables |
| 217 | +
|
| 218 | +| Name | Description | |
| 219 | +|:--|:--| |
| 220 | +| `FRAUD_CHECK_IPDATACO_APIKEY` | [ipdata.co API key](https://docs.ipdata.co/). | |
| 221 | +| `FRAUD_CHECK_IPINFOIO_TOKEN` | [ipinfo.io API token](https://ipinfo.io/developers). | |
| 222 | +| `MINFRAUD_ACCOUNT_ID` | [MaxMind Account ID](https://support.maxmind.com/account-faq/license-keys/how-do-i-generate-a-license-key/). | |
| 223 | +| `MINFRAUD_LICENSE_KEY` | [MaxMind License Key](https://support.maxmind.com/account-faq/license-keys/how-do-i-generate-a-license-key/). | |
0 commit comments