cuber / ngx_http_google_filter_module

Nginx Module for Google Mirror
BSD 2-Clause "Simplified" License
3.35k stars 779 forks source link

scholar大家目前可以用吗? #63

Closed rexdf closed 8 years ago

rexdf commented 8 years ago

我的目前是:

We're sorry...

... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.

See Google Help for more information.

rexdf commented 8 years ago

似乎是IP被封了 shadowsocks都没法正常访问 换IP果断可以

rexdf commented 8 years ago

有办法把nginx的upstream转发到ssh tunnel吗?不大想在其他机器上再做一个代理。

cuber commented 8 years ago

你可以把 scholar 流量都导入到另一个 vps

upstream scholar.google.com {
  server <another vps>:80;
}

server {
  ...
  location / {
    ...
    google_ssl_off "scholar.google.com";
    ...
  }
  ...
}

然后另外一台 vps 很简单配置下就行

server {
  server_name scholar.google.com;
  resolver 8.8.8.8;
  location / {
    proxy_pass https://scholar.google.com;
  }
}
cuber commented 8 years ago

Scholar 限制更加严格,好多 do 的 ip 都被封了

rexdf commented 8 years ago

发现scholar很多服务器curl都是错误的。

我github有专门针对scholar的repo,但是不想过于广泛传播,人一多又完全不能用了。 然后用如下的配置

    set $upstream "";

    rewrite_by_lua '
        local upstreams = {
            "http://server1.example.com",
            "http://server2.example.com"
        }
        ngx.var.upstream=upstreams[ math.random( #upstreams ) ]
    ';
   proxy_set_header Authorization abcd; #可选保护上游代理服务器
    proxy_buffering off;
    proxy_redirect off;
    proxy_set_header Accept-Encoding "";
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass       $upstream;
xinyue commented 8 years ago

@rexdf 我使用了你说的那个 repo,发现还是不能用,curl 了一下,发现果然不对,看来 Google 把 OpeShift 的 ip 也封了。难道只能买 VPS 了吗,还有其他的方法吗?

rexdf commented 8 years ago

@xinyue 可以 反复删除重建 直到curl正常可以使用 我现在还可以用 另外不要大面积传播 IP被谷歌封完就没有了

xinyue commented 8 years ago

@rexdf 明白,已经收到你的邮件了,感谢你的解答!

xinyue commented 8 years ago

@rexdf 已经按照你的方法,反复删除重建找到了curl正常可以使用的ip。使用你的repo里面的默认配置就可以正常访问了。但是有一个问题我还是想问一下,你架设在 OpenShift 上的是上游代理服务器,按照这里的配置文件

set $upstream "";

rewrite_by_lua '
    local upstreams = {
        "http://server1.example.com",
        "http://server2.example.com"
    }
    ngx.var.upstream=upstreams[ math.random( #upstreams ) ]
';

proxy_set_header Authorization abcd; #可选保护上游代理服务器 proxy_buffering off; proxy_redirect off; proxy_set_header Accept-Encoding ""; proxy_set_header User-Agent $http_user_agent; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass $upstream;

你在 OpenShift 上建了两个上游代理服务器作为负载平衡,还是使用了一个 VPS 放置上面的配置文件。能不能再在 OpenShift 上建一个 nginx,代理前面两个上游代理服务器?还有,如果直接使用 OpenShift 上的上游代理服务器,流量稍大会不会马上被封啊?谢谢!

rexdf commented 8 years ago

@xinyue 因为VPS本地IP被谷歌封了,那个repo的作用实际上就是让谷歌以为是Openshift的IP在访问。上面的代码就是二级反向代理而已。理论上是可以直接使用(应该会有少量问题,因为没做任何替换),如果真要使用,推荐不要公开传播,个人使用应该没有问题(放到博客之类的共享,应该几天就被谷歌封了)。另外,Openshift的ssl必须付费,不用ssl比较容易被墙。所以最好还是VPS上用上面代码进行二级反向代理。

另外不要再次强调一遍,不要到处传播,因为Openshift应该也是可以被封光的,而且大面积传播会导致GFW过分关注,像GAE一样完全封死也就不远了。具体细节不要公开,也不要在任何博客上面推荐Openshift

xinyue commented 8 years ago

谢谢你的解答,已经弄明白了,我不会传播的。