V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
gaotongfei
V2EX  ›  Python

python requests(+requesocks)用 tor 爬 google scholar 老是 403

  •  
  •   gaotongfei ·
    gaotongfei · 2015-11-21 00:15:57 +08:00 · 2435 次点击
    这是一个创建于 3323 天前的主题,其中的信息可能已经有所发展或是发生改变。

    伪装了 user-agent (有个 user-agent list ,随机从里面取一个),爬取频率 20 秒一次, tor 开了 100 个端口,也存储了好多的 cookie ,每次 get 请求都随机从 tor 的端口和 cookie 中取一个,但是还是大范围的 403 。

    我怀疑是获取 cookie 时没有用 socks5 代理?导致暴露了 ip ?可问题是我用的 requests 不支持 socks5 代理, requesocks 是支持了,但是没法获取 cookie (因为 requesocks fork 的 requests 版本太低了)

    有没有什么解决办法?

    17 条回复    2015-11-22 11:23:34 +08:00
    linhua
        1
    linhua  
       2015-11-21 00:22:43 +08:00   ❤️ 1
    http 代理-->GAE 代理-->xx-net
    https://github.com/XX-net/XX-Net
    gaotongfei
        2
    gaotongfei  
    OP
       2015-11-21 01:09:20 +08:00
    @linhua 可以每次 get 就更换一个 ip 吗?
    linhua
        3
    linhua  
       2015-11-21 01:15:15 +08:00   ❤️ 1
    linhua
        4
    linhua  
       2015-11-21 01:18:44 +08:00
    @gaotongfei
    不过出口 ip 和 google ip(入口 ip)是不一样的,你架设好代理后,查询一下 ip 就明白了。
    ericls
        5
    ericls  
       2015-11-21 05:15:01 +08:00
    IP 地址不是问题

    DO 随便买个 VPS 都有 2^64 个 IP 一辈子都用不完
    TaMud
        6
    TaMud  
       2015-11-21 05:23:30 +08:00
    @ericls 哪家 vps 有这么多 ip ?
    cnleoyang
        7
    cnleoyang  
       2015-11-21 07:15:01 +08:00
    @TaMud ipv6?
    stockss
        8
    stockss  
       2015-11-21 07:33:41 +08:00   ❤️ 1
    用 privoxy 把 socks 代理转化为 http 代理,就可以给 python 用了
    Tianpu
        9
    Tianpu  
       2015-11-21 07:55:39 +08:00 via iPhone
    很可能是某些出口被封了吧。

    还有 curl 才是最好的,直接 tor 代理。

    建议转 php 吧。
    lazycat
        10
    lazycat  
       2015-11-21 09:13:30 +08:00 via Android
    @ericls do 这种直接 IP 段都被 google 封了的,你买多少都没用
    feather12315
        11
    feather12315  
       2015-11-21 09:33:23 +08:00 via Android
    @ericls ?不明白。 4 只有 1 个, 6 有 15 个呀
    gaotongfei
        12
    gaotongfei  
    OP
       2015-11-21 09:43:00 +08:00 via Android
    @stockss 想过用它,但是因为我 tor 开了 100 个端口,我担心对应 privoxy 要写 100 个配置文件,嫌麻烦就没用
    gaotongfei
        13
    gaotongfei  
    OP
       2015-11-21 10:03:36 +08:00 via Android
    @stockss
    You can use this statement multiple times to make Privoxy listen on more ports or more IP addresses
    查了下,好像可以在一个配置文件里把所有需要监听的端口都写出来。等会试试看。
    FreeDog
        14
    FreeDog  
       2015-11-21 11:10:40 +08:00
    @ericls 那些 IPv6 地址会被 Google 看成一个的。现在随随便便分配都是 /64 的块,判断逻辑也与时俱进了。
    Arthur2e5
        15
    Arthur2e5  
       2015-11-22 01:17:09 +08:00
    本身从 TOR 上 Google 正常搜索都经常要输验证码。

    这种事情本来就该是问朋友借一排 SS 之类的玩法……
    gaotongfei
        16
    gaotongfei  
    OP
       2015-11-22 11:19:30 +08:00 via Android
    @Arthur2e5 也用过 ss ,从某网站买的九个账号,一开始都是 200 ,爬的久了还是 403 ,可能是九个还是太少了。不知道哪里有便宜的 ss 账号卖。
    Arthur2e5
        17
    Arthur2e5  
       2015-11-22 11:23:34 +08:00   ❤️ 1
    @gaotongfei 嘛,只要频率高了都会……所以我才会说出“借”(嗯,或者请吃顿饭?)这样的话,因为基本都是用个没多久就要换掉的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5399 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:22 · PVG 09:22 · LAX 17:22 · JFK 20:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.