网页爬虫 - python requests库模拟登陆学校教务网遇到数据库繁忙
高洛峰
高洛峰 2017-04-17 18:01:26
0
5
637

第一次写爬虫也是第一次在SF提问题=。=
思路就是get登陆下网址获得一个cookie然后带着cookie以post方式登陆
headers伪造和浏览器一模一样
服务器总是返回一个数据库繁忙的界面,找了很久也不知道原因在哪


s = requests.Session()
x = s.get(loginUrl)
r = s.post(postUrl,data=
{
'zjh':'********',
'mm':'********',
'v_yzm':CodeRecognition()
}
,headers = headers)


print(x.headers)
print(x.request.headers)
print(r.headers)
print(r.request.headers)


f=file("cookie.txt","w+")
f.write(r.text)
f.close()

CodeRecognition() 这个验证码识别模块源码太长就不贴出来了,就是先用urllib库访问验证码地址 http://222.195.242.222:8080/validateCodeAction.do 把图片下载到本地,然后对图像二值化灰度等处理后调用Tesseract-OCR识别并返回

补充内容:在chrome中用EditThisCookie管理工具删掉网站的cookie然后刷新页面,登录会失败,返回数据库繁忙。但是我用session先访问网站返回给了我一个setcookie,然后带着这个cookie post表单为什么还是会有这个错误呢?

这是在sublime3中运行打印出的内容:

{'Transfer-Encoding': 'chunked', 'Set-Cookie': 'JSESSIONID=bhazvcnoUA-YYbw_WQZsv; path=/', 'Keep-Alive': 'timeout=8, max=500', 'Server': 'Apache', 'Connection': 'Keep-Alive', 'Cache-Control': 'private', 'Date': 'Sun, 15 May 2016 09:06:53 GMT', 'Content-Type': 'text/html; charset=GBK'}

{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.9.1'}

{'Transfer-Encoding': 'chunked', 'Keep-Alive': 'timeout=8, max=499', 'Server': 'Apache', 'Connection': 'Keep-Alive', 'Date': 'Sun, 15 May 2016 09:06:53 GMT', 'Content-Type': 'text/html; charset=GBK'}

{'Origin': 'http://222.195.242.222:8080', 'Content-Length': '77', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36', 'Host': '222.195.242.222:8080', 'Referer': 'http://222.195.242.222:8080/', 'Cookie': 'JSESSIONID=bhazvcnoUA-YYbw_WQZsv', 'Content-Type': 'application/x-www-form-urlencoded'}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(5)
Peter_Zhu

으아악

위의 코드는 데이터를 얻을 수 있습니다
기본 아이디어는
GET이 인증 코드를 받으면 서버가 쿠키를 반환합니다
이 쿠키를 가져온 다음 양식을 게시하세요
나는 단지 최근 학교 이름을 쓰는데 이 웹사이트의 크롤러가 많은 문제를 겪고 해결했습니다
이것은 우리 학교의 크롤러보다 쉽습니다...

黄舟

너희 학교의 학사행정 시스템은 정말...
주인님, 크롤러로 일하실 땐 인내심을 가지셔야 합니다. 오늘은 할 일이 없어서 살펴보도록 도와드렸습니다. 성공적으로 요청할 수 있는 코드입니다. 항상 호출에 실패하는 인터페이스의 경우 먼저 키 데이터가 올바른지 생각해야 하며, 실제로 정확하지만 여전히 이상한 오류가 반환되는 경우에는 브라우저에서 디버깅하여 확인할 수 있습니다. , POST 요청 데이터에는 다른 빈 필드가 여러 개 있습니다. 물론 이는 백그라운드 판단에 실제로 의미가 없을 수 있지만 모두 의미가 없다는 의미는 아니므로 오류가 발생하면 추가해야 합니다. 물론, 데이터 내부의 필드가 올바른지 아니면 HTTP 헤더의 정보를 고려해야 합니다. 주요 항목은 Origin, Referer 및 User-Agent입니다. 쿠키 항목의 정보가 추가되지 않았습니다. 다음과 같이 항목을 하나씩 추가해 보니 쿠키 문제인 것으로 확인되었습니다

으아악

현재 데이터베이스는 더 이상 사용 중이 아니지만 인증 코드 오류가 발생한 후 페이지가 리디렉션되었습니다.

마지막으로 크롤링에는 인내심이 필요합니다. 특히 크롤링 방지 전략을 사용하는 사이트의 경우 더욱 그렇습니다.

巴扎黑

귀하의 계정 비밀번호가 노출되었음을 알려드립니다.

小葫芦

하하, 혹시 이 계정으로 로그인하신 분 계시나요?

PHPzhong

모자이크 처리는 하지 않습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿