pear_warranty 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +67 -0
- data/Rakefile +8 -0
- data/lib/pear_warranty.rb +81 -0
- data/lib/pear_warranty/version.rb +3 -0
- data/pear_warranty.gemspec +28 -0
- data/spec/pear_warranty_spec.rb +141 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/support/proxy_error.html +94 -0
- data/spec/support/uncorrect_warranty.html +467 -0
- data/spec/support/with_warranty.html +496 -0
- data/spec/support/without_warranty.html +496 -0
- metadata +149 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 086f27db47c2ed6f529fea9454293d5a18bca2e6
|
4
|
+
data.tar.gz: 87648ce44ae4fb431961434263cf478c00cec9b2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7a40fcf34bc2255cba241999f107b0d1ece0a97be9928393bbe93dfc83e63da35dbb0361a51131edb9d5bf3a82624bb7db17b445ec61dd2e626a3264e7c355d1
|
7
|
+
data.tar.gz: b472ff190e744f59065edd747dae1460bf5eb3518c133a2b06ffc63909cd73b65e8926a0fbacd2a2dd4a7b30129e5fdee7556d8cf43c67ef7915b080d15f723d
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Roman Kalnytsky
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# PearWarranty
|
2
|
+
|
3
|
+
An easy to use simple gem that allow you to check your IPhone warranty information from _https://selfsolve.apple.com_ using your IMEI. One more thing - no GSX account needed.
|
4
|
+
|
5
|
+
This gem use _https://www.proxfree.com_ to not be banned by IP. That`s why we get a little bit slowly request but there is no another free and simple way to get access to your warranty information.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'pear_warranty'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install pear_warranty
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
To get warranty information about your IPhone just call:
|
26
|
+
```
|
27
|
+
PearWarranty.check('your IMEI here')
|
28
|
+
```
|
29
|
+
That call return hash with warranty information. If your device is out of Repairs and Service Coverage it will return hash:
|
30
|
+
```
|
31
|
+
{
|
32
|
+
warranty: false,
|
33
|
+
date: nil
|
34
|
+
}
|
35
|
+
```
|
36
|
+
In another situation it returns hash with `true` for `:warranty` key and `Date` object of estimated expiration date for `:date`. If there is error with proxy server or your IMEI hash with `:error` key and description message will be returned.
|
37
|
+
|
38
|
+
Also your can specify proxy index domain by passing `proxy_index` parameter:
|
39
|
+
```
|
40
|
+
PearWarranty.check('your IMEI here', 0)
|
41
|
+
```
|
42
|
+
Proxy index must be in range of 0 and `PearWarranty::PROXIES.size`. If it goes out randomly chosen will be used.
|
43
|
+
|
44
|
+
## Dependencies
|
45
|
+
|
46
|
+
- mechanize
|
47
|
+
- http-cookie
|
48
|
+
- ruby 1.9.2 or newer
|
49
|
+
|
50
|
+
## Developers
|
51
|
+
|
52
|
+
Run all tests with:
|
53
|
+
```
|
54
|
+
rspec spec
|
55
|
+
```
|
56
|
+
|
57
|
+
## Contributing
|
58
|
+
|
59
|
+
1. Fork it ( https://github.com/imdrasil/pear_warranty/fork )
|
60
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
61
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
62
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
63
|
+
5. Create a new Pull Request
|
64
|
+
|
65
|
+
## License
|
66
|
+
|
67
|
+
This gem is distributed under the MIT license. Please see the LICENSE file.
|
data/Rakefile
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require "pear_warranty/version"
|
2
|
+
require 'mechanize'
|
3
|
+
|
4
|
+
module PearWarranty
|
5
|
+
|
6
|
+
TRIES = 10
|
7
|
+
PROXIES = ['qc', 'de', 'al', 'nl', 'fr', 'no', 'tx', 'nj', 'il', 'ga' ]
|
8
|
+
COOKIES = {'_ga' => 'GA1.2.343285711.1435218476', '_gat' => '1', 's' => '3fd5f4953c541474c867c23b28853ad2', 'token' => 'acc1de9efdac455d'}
|
9
|
+
|
10
|
+
def self.check(serial, proxy_index = nil)
|
11
|
+
agent = Mechanize.new
|
12
|
+
proxy_index ||= rand(COOKIES.size)
|
13
|
+
page = nil
|
14
|
+
error = true
|
15
|
+
TRIES.times do
|
16
|
+
form = get_form(proxy_index, "https://selfsolve.apple.com/wcResults.do?sn=#{serial}&Continue=Continue&num=0", agent)
|
17
|
+
set_cookie(agent)
|
18
|
+
begin
|
19
|
+
page = agent.submit(form)
|
20
|
+
rescue Net::HTTP::Persistent::Error
|
21
|
+
next
|
22
|
+
end
|
23
|
+
page = page.body
|
24
|
+
unless page =~ /pferror/
|
25
|
+
error = false
|
26
|
+
break
|
27
|
+
end
|
28
|
+
proxy_index = rand(COOKIES.size)
|
29
|
+
end
|
30
|
+
if error
|
31
|
+
{error: 'Problem with proxy'}
|
32
|
+
else
|
33
|
+
if page =~ /but this serial number is not valid/
|
34
|
+
{ error: 'There is no such imei or service is not available at this moment' }
|
35
|
+
else
|
36
|
+
text = page.split('warrantyPage.warrantycheck.displayPHSupportInfo')[1].scan(/\(.*\)/)[0].delete('()')
|
37
|
+
params = text.split(', ')
|
38
|
+
warranty = to_boolean(params.first.delete ' ')
|
39
|
+
{
|
40
|
+
warranty: warranty,
|
41
|
+
date: (Date.parse(params[2][/Estimated Expiration Date: (.*)/, 1] + ' ' + params[3][0..3]) if warranty)
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def self.get_url(proxy)
|
50
|
+
"https://#{PROXIES[proxy] || PROXIES[0]}.proxfree.com/request.php?do=go"
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.to_boolean(str)
|
54
|
+
str == 'true'
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.get_form(proxy, value, agent)
|
58
|
+
url = get_url(proxy)
|
59
|
+
builder = Nokogiri::HTML::Builder.new do |doc|
|
60
|
+
doc.form_ :method=>'POST', :action=>url, name: 'main_submission' do
|
61
|
+
doc.input :type=>'hidden', :name=>'pfserverDropdown', :value => url
|
62
|
+
doc.input :type=>'hidden', :name=>'allowCookies', :value => 'on'
|
63
|
+
doc.input :type=>'hidden', :name=>'pfipDropdown', :value => 'default'
|
64
|
+
doc.input type: 'text', name: 'get', value: value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
node = Nokogiri::HTML(builder.to_html)
|
68
|
+
form = Mechanize::Form.new(node.at('form'), agent)
|
69
|
+
form
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.set_cookie(agent)
|
73
|
+
COOKIES.each_pair do |k,v|
|
74
|
+
cookie = Mechanize::Cookie.new(k, v)
|
75
|
+
cookie.domain = '.proxfree.com'
|
76
|
+
cookie.path = '/'
|
77
|
+
agent.cookie_jar.add(cookie)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'pear_warranty/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "pear_warranty"
|
8
|
+
spec.version = PearWarranty::VERSION
|
9
|
+
spec.authors = ["Roman Kalnytsky"]
|
10
|
+
spec.email = ["moranibaca@gmail.com"]
|
11
|
+
spec.summary = %q{Get IPhone warranty information}
|
12
|
+
spec.description = %q{Get IPhone warranty information form https://selfsolve.apple.com by device imei}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'webmock'
|
25
|
+
|
26
|
+
spec.add_dependency 'http-cookie'
|
27
|
+
spec.add_dependency 'mechanize'
|
28
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
RSpec.describe PearWarranty do
|
5
|
+
subject(:class1) { PearWarranty }
|
6
|
+
|
7
|
+
context :to_boolean do
|
8
|
+
it 'should return true if argument is "true"'do
|
9
|
+
expect(class1.send(:to_boolean, 'true')).to be true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should return false with "false" argument' do
|
13
|
+
expect(class1.send(:to_boolean, 'false')).to be false
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should return false with "asd" argument' do
|
17
|
+
expect(class1.send(:to_boolean, 'asd')).to be false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context :get_url do
|
22
|
+
it 'should return correct url for last proxy' do
|
23
|
+
expect(class1.send(:get_url, class1::PROXIES.size - 1)).to eq("https://#{class1::PROXIES.last}.proxfree.com/request.php?do=go")
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should return first url for incorrect proxy index' do
|
27
|
+
expect(class1.send(:get_url, class1::PROXIES.size)).to eq("https://#{class1::PROXIES[0]}.proxfree.com/request.php?do=go")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context :get_form do
|
32
|
+
let(:proxy) { 0 }
|
33
|
+
let(:value) { 'value' }
|
34
|
+
subject(:form) { class1.send(:get_form, proxy, value, Mechanize.new) }
|
35
|
+
|
36
|
+
it 'should return Mechanize::Form object' do
|
37
|
+
expect(form).to be_instance_of(Mechanize::Form)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should return form with correct form attributes' do
|
41
|
+
expect([form.action, form.name, form.send(:method)]).to eq([PearWarranty.send(:get_url, proxy), 'main_submission', 'POST'])
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should return form with important fields' do
|
45
|
+
h = 'hidden'
|
46
|
+
url = class1.send(:get_url, proxy)
|
47
|
+
array = [
|
48
|
+
[h, 'pfserverDropdown', url],
|
49
|
+
[h, 'allowCookies', 'on'],
|
50
|
+
[h, 'pfipDropdown', 'default'],
|
51
|
+
['text', 'get', value]
|
52
|
+
]
|
53
|
+
expect(form.fields.map{ |f| [f.type, f.name, f.value] }).to eq(array)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context :set_cookie do
|
58
|
+
subject(:cookies) {
|
59
|
+
agent = Mechanize.new
|
60
|
+
class1.send(:set_cookie, agent)
|
61
|
+
agent.cookies
|
62
|
+
}
|
63
|
+
let(:domain) { 'proxfree.com' }
|
64
|
+
|
65
|
+
it 'should add to agent needed number of cookies' do
|
66
|
+
expect(cookies.size).to eq(class1::COOKIES.size)
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should add cookies with correct domain' do
|
70
|
+
expect(cookies.map{ |c| c.domain }).to eq(Array.new(class1::COOKIES.size){ domain })
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should add cookies with correct path' do
|
74
|
+
expect(cookies.map{ |c| c.path }).to eq(Array.new(class1::COOKIES.size){ '/' })
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should add cookies with correct names and values' do
|
78
|
+
values = []
|
79
|
+
class1::COOKIES.each_pair{ |k, v| values << [k, v] }
|
80
|
+
expect(cookies.map{ |c| [c.name, c.value] }).to eq(values)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context :check, type: :request do
|
85
|
+
let(:date) { Date.new(2015, 9, 9)}
|
86
|
+
before :all do
|
87
|
+
@without_imei = '013896000639712'
|
88
|
+
@with_imei = '013977000323877'
|
89
|
+
@uncorrect_imei = '1a312312312312'
|
90
|
+
@fake_imei = 'fake_date_to_reproduse_behaviour'
|
91
|
+
@without_params = [@without_imei,'without_warranty']
|
92
|
+
@with_params = [@with_imei, 'with_warranty']
|
93
|
+
@uncorrect_params = [@uncorrect_imei, 'uncorrect_warranty']
|
94
|
+
@fake_params = [@fake_imei, 'proxy_error']
|
95
|
+
@default_proxy = 0
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should use given proxy' do
|
99
|
+
mock_request(@default_proxy, *@uncorrect_params)
|
100
|
+
class1.check(@uncorrect_imei, @default_proxy)
|
101
|
+
expect(WebMock).to have_requested(:post, "https://#{class1::PROXIES[0]}.proxfree.com/request.php?do=go")
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should use random proxy if no one is given'do
|
105
|
+
mock_all_request(@fake_imei,@fake_params[1])
|
106
|
+
class1.check(@fake_imei)
|
107
|
+
expect(a_request(:post, /https\:\/\/(#{class1::PROXIES.join('|')})\.proxfree\.com\/request\.php\?do=go/)).to have_been_made.times(10)
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'return hash with keys :date and :warranty' do
|
111
|
+
mock_request(@default_proxy, *@without_params)
|
112
|
+
expect(class1.check(@without_imei, @default_proxy).keys).to include(:warranty, :date)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'return hash with true for :warranty and correct date for :date for imei with warranty' do
|
116
|
+
mock_request(@default_proxy, *@with_params)
|
117
|
+
expect(class1.check(@with_imei, @default_proxy)).to include(warranty: true, date: date)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'return hash with false for :warranty and nil for :date for imei without warranty' do
|
121
|
+
mock_request(@default_proxy, *@without_params)
|
122
|
+
expect(class1.check(@without_imei, @default_proxy)).to include(warranty: false, date: nil)
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'return hash with :error key and message if there is no such key in service' do
|
126
|
+
mock_request(@default_proxy, *@uncorrect_params)
|
127
|
+
expect(class1.check(@uncorrect_imei, @default_proxy).keys).to include(:error)
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'should make maximum number of tries if an error is occurred'do
|
131
|
+
mock_all_request(@fake_imei,@fake_params[1])
|
132
|
+
class1.check(@fake_imei)
|
133
|
+
expect(a_request(:post, /https\:\/\/(#{class1::PROXIES.join('|')})\.proxfree\.com\/request\.php\?do=go/)).to have_been_made.times(class1::TRIES)
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'should return hash with :error key if there is problem with proxy'do
|
137
|
+
mock_all_request(@fake_imei,@fake_params[1])
|
138
|
+
expect(class1.check(@fake_imei).keys).to include(:error)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'pear_warranty'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'webmock/rspec'
|
4
|
+
Bundler.setup
|
5
|
+
WebMock.disable_net_connect!
|
6
|
+
|
7
|
+
def spec_folder
|
8
|
+
File.expand_path '..', __FILE__
|
9
|
+
end
|
10
|
+
|
11
|
+
def mock_request(proxy, imei, name)
|
12
|
+
proxy_url = "https://#{PearWarranty::PROXIES[proxy]}.proxfree.com/request.php?do=go"
|
13
|
+
args = {allowCookies: 'on', pfipDropdown: "default", pfserverDropdown: proxy_url}
|
14
|
+
stub_request(:post, proxy_url).
|
15
|
+
with(body: args.merge(get: "https://selfsolve.apple.com/wcResults.do?sn=#{imei}&Continue=Continue&num=0")).
|
16
|
+
to_return(
|
17
|
+
:status => 200,
|
18
|
+
:body => File.open(spec_folder + "/support/#{name}.html")
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
def mock_all_request(imei, name, without_body = true)
|
23
|
+
if without_body
|
24
|
+
stub_request(:post, /https\:\/\/(#{class1::PROXIES.join('|')})\.proxfree\.com\/request\.php\?do=go/).
|
25
|
+
to_return(:status => 200, :body => File.open(spec_folder + "/support/#{name}.html"))
|
26
|
+
else
|
27
|
+
PearWarranty::PROXIES.size.times do |p|
|
28
|
+
mock_request(p,imei, name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
<html lang="en"><!--<![endif]--><head>
|
2
|
+
<meta charset="utf-8">
|
3
|
+
<meta name="description" content="ProxFree error page.">
|
4
|
+
<meta name="keywords" content="proxy,error">
|
5
|
+
<title>ProxFree: Error!</title>
|
6
|
+
|
7
|
+
<link href="//proxfree-nitrad.netdna-ssl.com/assets/style.css?new" rel="stylesheet" type="text/css">
|
8
|
+
<link rel="apple-touch-icon" sizes="57x57" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-57x57.png">
|
9
|
+
<link rel="apple-touch-icon" sizes="60x60" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-60x60.png">
|
10
|
+
<link rel="apple-touch-icon" sizes="72x72" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-72x72.png">
|
11
|
+
<link rel="apple-touch-icon" sizes="76x76" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-76x76.png">
|
12
|
+
<link rel="apple-touch-icon" sizes="114x114" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-114x114.png">
|
13
|
+
<link rel="apple-touch-icon" sizes="120x120" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-120x120.png">
|
14
|
+
<link rel="apple-touch-icon" sizes="144x144" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-144x144.png">
|
15
|
+
<link rel="apple-touch-icon" sizes="152x152" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-152x152.png">
|
16
|
+
<link rel="apple-touch-icon" sizes="180x180" href="//proxfree-nitrad.netdna-ssl.com/apple-touch-icon-180x180.png">
|
17
|
+
<link rel="icon" type="image/png" href="//proxfree-nitrad.netdna-ssl.com/favicon-32x32.png" sizes="32x32">
|
18
|
+
<link rel="icon" type="image/png" href="//proxfree-nitrad.netdna-ssl.com/android-chrome-192x192.png" sizes="192x192">
|
19
|
+
<link rel="icon" type="image/png" href="//proxfree-nitrad.netdna-ssl.com/favicon-96x96.png" sizes="96x96">
|
20
|
+
<link rel="icon" type="image/png" href="//proxfree-nitrad.netdna-ssl.com/favicon-16x16.png" sizes="16x16">
|
21
|
+
<link rel="manifest" href="//proxfree-nitrad.netdna-ssl.com/manifest.json">
|
22
|
+
<link rel="shortcut icon" href="//proxfree-nitrad.netdna-ssl.com/favicon.ico">
|
23
|
+
<meta name="msapplication-TileColor" content="#2d89ef">
|
24
|
+
<meta name="msapplication-TileImage" content="//proxfree-nitrad.netdna-ssl.com/mstile-144x144.png">
|
25
|
+
<meta name="msapplication-config" content="//proxfree-nitrad.netdna-ssl.com/browserconfig.xml">
|
26
|
+
<meta name="theme-color" content="#ffffff">
|
27
|
+
|
28
|
+
<link rel="canonical" href="https://www.proxfree.com/">
|
29
|
+
<script async="" src="//www.google-analytics.com/analytics.js"></script><script src="//proxfree-nitrad.netdna-ssl.com/assets/minified.js"></script>
|
30
|
+
|
31
|
+
<script>
|
32
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
33
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
34
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
35
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
36
|
+
|
37
|
+
ga('create', 'UA-7540624-50', 'auto');
|
38
|
+
ga('send', 'pageview');
|
39
|
+
</script>
|
40
|
+
</head>
|
41
|
+
<body onload="fillpfserverDropdown();">
|
42
|
+
<div id="pftop2">
|
43
|
+
<div class="pfcenterAlign">
|
44
|
+
<a href="/" class="pflogo"></a>
|
45
|
+
<ul id="pfmenu">
|
46
|
+
<li class="pflft"><span><a href="https://www.proxfree.com/">HOME</a></span></li>
|
47
|
+
<li><span><a href="https://www.proxfree.com/facebook-proxy.php">FACEBOOK PROXY</a></span></li>
|
48
|
+
<li><span><a href="https://www.proxfree.com/youtube-proxy.php">YOUTUBE PROXY</a></span></li>
|
49
|
+
<li><span><a href="https://www.proxfree.com/adult-proxy.php">ADULT PROXY</a></span></li>
|
50
|
+
<li class="pfrt"><span><a href="https://www.proxfree.com/faq.php">FAQ</a></span></li>
|
51
|
+
</ul>
|
52
|
+
<div class="pftopad">
|
53
|
+
|
54
|
+
</div>
|
55
|
+
<h1><span>ProxFree</span> Error!</h1>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
<div id="pfcontent">
|
59
|
+
<div class="pfcenterAlign">
|
60
|
+
<div class="pfad2">
|
61
|
+
</div>
|
62
|
+
<div class="pfleftads">
|
63
|
+
<div class="pfad3">
|
64
|
+
</div>
|
65
|
+
<div class="pfad3">
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
<p class="pferror">The requested resource could not be loaded because the server belonging to the target website returned an error:<br> <b>403 Forbidden</b> (<span class="tooltip" onmouseout="exit()" onmouseover="tooltip('');">?</span>). If you want to contact us about this problem, please copy + paste the full error message and tell us which server location you are using (look in the address bar at the top for fr.proxfree.com, tx.proxfree.com etc). Email: <a href="mailto:contact@proxfree.com">contact@proxfree.com</a></p><p class="pfctx2">[<a href="https://de.proxfree.com/page.php?get=B1iQMHx5y8483ljwgphLtB0czIAOO2rbvPqGO04sopjlFdUDcAUN0kF%2B8EHQXCN5raHR4BG0tiTsYsIINNB%2FC0CtApBcQCnQcL5w7Gps2MKrhtdddfb9BkAzDuSuUkiYmaFA8%2Bj0hqjnCi1mZeR4X5w86KobaVlC1n%2BjgB%2FkZQM5qZ2WPvHERnB1KDtQ6lOwMPb8QdiKoBNPekzhFRAp9g%3D%3D&key=437fd4e09b8b824d&bit=1&fl=norefer">Reload https://selfsolve.apple.com/wcResults.do?sn=[013977000323877,013896000639712]&Continue=Continue&num=0</a>]</p> <p></p>
|
69
|
+
<p class="pfctx2"><strong>YOUR server location is de.proxfree.com.</strong>
|
70
|
+
</p><p class="pfctx2">If you have any problems or aren't sure about an error, please <a href="/contact.php">contact us</a> and don't forget to say what your server location is.
|
71
|
+
</p></div>
|
72
|
+
</div>
|
73
|
+
<div id="pffooter">
|
74
|
+
<div class="pfcenterAlign">
|
75
|
+
<p>Copyright © 2011-2015 ProxFree.com all rights reserved</p>
|
76
|
+
<ul><li><a href="https://m.proxfree.com/">Mobile</a></li>
|
77
|
+
<li class="pfsep">|</li>
|
78
|
+
<li><a href="https://www.proxfree.com/proxy/">Proxy</a></li>
|
79
|
+
<li class="pfsep">|</li>
|
80
|
+
<li><a href="https://www.proxfree.com/privacy-policy.php">Privacy Policy</a></li>
|
81
|
+
<li class="pfsep">|</li>
|
82
|
+
<li><a href="https://www.proxfree.com/terms.php">Terms of Use</a></li>
|
83
|
+
<li class="pfsep">|</li>
|
84
|
+
<li><a href="https://www.proxfree.com/faq.php">FAQ </a></li>
|
85
|
+
<li class="pfsep">|</li>
|
86
|
+
<li><a href="https://www.proxfree.com/contact.php">Contact </a></li>
|
87
|
+
<li class="pfsep">|</li>
|
88
|
+
<li><a href="https://www.proxfree.com/sitemap.php">Site Map</a></li>
|
89
|
+
</ul>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
|
93
|
+
|
94
|
+
</body></html>
|