Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

跳出来验证码之后输入,报错 #61

Closed
drugnotes opened this issue Apr 13, 2017 · 17 comments
Closed

跳出来验证码之后输入,报错 #61

drugnotes opened this issue Apr 13, 2017 · 17 comments

Comments

@drugnotes
Copy link

跳出来验证码之后,输入正确的验证码之后,会存在报错,这种情况出现在今天下午;输入验证码后报错的代码如下:

ocr  解封成功正在为您跳转来源地址...
Traceback (most recent call last):

  File "<ipython-input-1-9d314b4b1274>", line 1, in <module>
    runfile('C:/Users/lieto/.spyder-py3/Wechat.py', wdir='C:/Users/lieto/.spyder-py3')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/lieto/.spyder-py3/Wechat.py", line 13, in <module>
    data = wechats.get_gzh_message_and_info(wechatid="ji-lian-mei")

  File "C:\ProgramData\Anaconda3\lib\site-packages\wechatsogou\api.py", line 248, in get_gzh_message_and_info
    gzh_info = self.get_gzh_info(wechatid)

  File "C:\ProgramData\Anaconda3\lib\site-packages\wechatsogou\api.py", line 97, in get_gzh_info
    info = self.search_gzh_info(wechatid, 1)

  File "C:\ProgramData\Anaconda3\lib\site-packages\wechatsogou\api.py", line 41, in search_gzh_info
    text = self._search_gzh_text(name, page)

  File "C:\ProgramData\Anaconda3\lib\site-packages\wechatsogou\basic.py", line 312, in _search_gzh_text
    self._vcode_url.replace('http://', '')))

  File "C:\ProgramData\Anaconda3\lib\site-packages\wechatsogou\basic.py", line 157, in _get
    raise WechatSogouVcodeException('weixin.sogou.com verification code')

WechatSogouVcodeException: weixin.sogou.com verification code
@drugnotes
Copy link
Author

尝试在api,py文件里面加入代理IP和 headers 等信息,但是还是需要验证码。不知道搜狗微信弹出验证码的机制是什么?

@fujq
Copy link

fujq commented Jun 7, 2017

向地址 http://weixin.sogou.com/antispider/thank.php 发post,会返回一个id的值,把这个值更新到cookies的SNUID里,就可以再次发送请求了。

@yfhlearnios
Copy link

@fujq 你好,能说说具体post里面需要什么内容吗?还是直接发个post请求就行了?想请教一下具体怎么做

@fujq
Copy link

fujq commented Jun 27, 2017

@yfhlearnios 在project里面的这个函数里面做的post就行

@yfhlearnios
Copy link

@fujq 好的,谢谢。我试一下

@fujq
Copy link

fujq commented Jun 27, 2017

@yfhlearnios 哦对 Referer在我抓的包里面不是照他那样写的,我改成了'Referer': 'http://weixin.sogou.com/antispider/?from=%2f' + quote(_vcode_url.replace('http://weixin.sogou.com/', ''))

@yfhlearnios
Copy link

@fujq 嗯嗯,好的

@yfhlearnios
Copy link

@fujq 你好,验证码的处理你是怎么做了?用那个打码平台还是自己做的?我这个自己也写了个搜狗爬虫的程序,就是现在遇到了验证码的问题。到时候要把程序放在centos的服务器上运行,想看看有没有什么能够程序自己处理验证码的方法。

@fujq
Copy link

fujq commented Jun 27, 2017

@yfhlearnios 我自己手动输入的,你要放到centos上的话可以参考下这个网址,不然就只能找代理了吧

@yfhlearnios
Copy link

@fujq 嗯嗯,感谢

@yfhlearnios
Copy link

@fujq 你好,我现在是在获得微信公众号链接,进入公众号文章列表界面的时候遇到了验证码,按照项目里的方式,结果服务器给我返回的状态码是501,不识别我发送的数据,这个可能是怎么造成的?你遇到过列表界面处理验证码的问题吗?

@fujq
Copy link

fujq commented Jun 28, 2017

@yfhlearnios 我只是用到搜索微信文章的列表,没试过公众号列表,不过我猜搜狗所有的验证码处理都是一样的?501我没遇到过,是不是你发的不是post?还是你post的内容不对?你可以对照用浏览器抓包然后模仿浏览器发请求试一下。

@yfhlearnios
Copy link

 @fujq 好的,谢谢

@tommyyz
Copy link

tommyyz commented Jun 29, 2017

@fujq

向地址 http://weixin.sogou.com/antispider/thank.php 发post,会返回一个id的值,把这个值更新到cookies的SNUID里,就可以再次发送请求了。

You saved my day.

补充一下,这个页面会返回一个json,其中有一个id的值,然后手动把这个id储存在self._session里即可。

snuid = json.loads(rr.text).get('id')
self._session.cookies.set('SNUID', snuid)

另外,我在对比浏览器请求时还发现一个cookie叫SUV需要获取,获取方式为调用http://pb.sogou.com/***.gif地址。必须在所有请求之前调用:

url_gif = 'http://pb.sogou.com/pv.gif?uigs_productid=webapp&type=antispider&subtype=close_refresh&domain=weixin&suv=&snuid=&t=' + str(int(time.time()))
self._session.get(url_gif)  # 获取SUV并存入session

你以为你伪装成gif我就认不出你了吗!

@fujq
Copy link

fujq commented Jun 29, 2017

@tomzhu6066 我没有请求过http://pb.sogou.com/cl.gif,只是每次发请求都把response的cookie更新到我自己的session里,在发http://weixin.sogou.com/antispider/thank.php 的post后SNUID要特别更新一下。

@tommyyz
Copy link

tommyyz commented Jun 29, 2017

@fujq 如果原库一切正常可以不调那个gif地址,我是有报错才加的,也有可能是代码改的多了。

@chyroc
Copy link
Owner

chyroc commented Jul 26, 2017

#92

@chyroc chyroc closed this as completed Jul 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants