python实现带验证码网站的自动登陆实现代码
早听说用python做网络爬虫非常方便,正好这几天单位也有这样的需求,需要登陆XX网站下载部分文档,于是自己亲身试验了一番,效果还不错。
本例所登录的某网站需要提供用户名,密码和验证码,在此使用了python的urllib2直接登录网站并处理网站的Cookie。
Cookie的工作原理:
Cookie由服务端生成,然后发送给浏览器,浏览器会将Cookie保存在某个目录下的文本文件中。在下次请求同一网站时,会发送该Cookie给服务器,这样服务器就知道该用户是否合法以及是否需要重新登录。
Python提供了基本的cookielib库,在首次访问某页面时,cookie便会自动保存下来,之后访问其它页面便都会带有正常登录的Cookie了。
原理:
(1)激活cookie功能
(2)反“反盗链”,伪装成浏览器访问
(3)访问验证码链接,并将验证码图片下载到本地
(4)验证码的识别方案网上较多,python也有自己的图像处理库,此例调用了火车头采集器的OCR识别接口。
(5)表单的处理,可用fiddler等抓包工具获取需要提交的参数
(6)生成需要提交的数据,生成http请求并发送
(7)根据返回的js页面判断是否登陆成功
(8)登陆成功后下载其它页面
此例中使用多个账号轮询登陆,每个账号下载3个页面。
下载网址因为某些问题,就不透露了。
以下是部分代码:
#!usr/bin/env python #-*- coding: utf-8 -*- import os import urllib2 import urllib import cookielib import xml.etree.ElementTree as ET #----------------------------------------------------------------------------- # Login in www.***.com.cn def ChinaBiddingLogin(url, username, password): # Enable cookie support for urllib2 cookiejar=cookielib.CookieJar() urlopener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) urllib2.install_opener(urlopener) urlopener.addheaders.append(('Referer', 'http://www.chinabidding.com.cn/zbw/login/login.jsp')) urlopener.addheaders.append(('Accept-Language', 'zh-CN')) urlopener.addheaders.append(('Host', 'www.chinabidding.com.cn')) urlopener.addheaders.append(('User-Agent', 'Mozilla/5.0 (compatible; MISE 9.0; Windows NT 6.1); Trident/5.0')) urlopener.addheaders.append(('Connection', 'Keep-Alive')) print 'XXX Login......' imgurl=r'http://www.*****.com.cn/zbw/login/image.jsp' DownloadFile(imgurl, urlopener) authcode=raw_input('Please enter the authcode:') #authcode=VerifyingCodeRecognization(r"http://192.168.0.106/images/code.jpg") # Send login/password to the site and get the session cookie values={'login_id':username, 'opl':'op_login', 'login_passwd':password, 'login_check':authcode} urlcontent=urlopener.open(urllib2.Request(url, urllib.urlencode(values))) page=urlcontent.read(500000) # Make sure we are logged in, check the returned page content if page.find('login.jsp')!=-1: print 'Login failed with username=%s, password=%s and authcode=%s' \ % (username, password, authcode) return False else: print 'Login succeeded!' return True #----------------------------------------------------------------------------- # Download from fileUrl then save to fileToSave # Note: the fileUrl must be a valid file def DownloadFile(fileUrl, urlopener): isDownOk=False try: if fileUrl: outfile=open(r'/var/www/images/code.jpg', 'w') outfile.write(urlopener.open(urllib2.Request(fileUrl)).read()) outfile.close() isDownOK=True else: print 'ERROR: fileUrl is NULL!' except: isDownOK=False return isDownOK #------------------------------------------------------------------------------ # Verifying code recoginization def VerifyingCodeRecognization(imgurl): url=r'http://192.168.0.119:800/api?' user='admin' pwd='admin' model='ocr' ocrfile='cbi' values={'user':user, 'pwd':pwd, 'model':model, 'ocrfile':ocrfile, 'imgurl':imgurl} data=urllib.urlencode(values) try: url+=data urlcontent=urllib2.urlopen(url) except IOError: print '***ERROR: invalid URL (%s)' % url page=urlcontent.read(500000) # Parse the xml data and get the verifying code root=ET.fromstring(page) node_find=root.find('AddField') authcode=node_find.attrib['data'] return authcode #------------------------------------------------------------------------------ # Read users from configure file def ReadUsersFromFile(filename): users={} for eachLine in open(filename, 'r'): info=[w for w in eachLine.strip().split()] if len(info)==2: users[info[0]]=info[1] return users #------------------------------------------------------------------------------ def main(): login_page=r'http://www.***.com.cnlogin/login.jsp' download_page=r'http://www.***.com.cn***/***?record_id=' start_id=8593330 end_id=8595000 now_id=start_id Users=ReadUsersFromFile('users.conf') while True: for key in Users: if ChinaBiddingLogin(login_page, key, Users[key]): for i in range(3): pageUrl=download_page+'%d' % now_id urlcontent=urllib2.urlopen(pageUrl) filepath='./download/%s.html' % now_id f=open(filepath, 'w') f.write(urlcontent.read(500000)) f.close() now_id+=1 else: continue #------------------------------------------------------------------------------ if __name__=='__main__': main()

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si Google Chrome n'affiche pas l'image du code de vérification ? Lors de la connexion à une page Web à l'aide de Google Chrome, un code de vérification est parfois requis. Certains utilisateurs constatent que Google Chrome ne peut pas afficher correctement le contenu de l'image lorsqu'il utilise des codes de vérification d'image. Qu'est-ce qui devrait être fait? L'éditeur ci-dessous vous expliquera comment gérer le code de vérification de Google Chrome qui ne s'affiche pas. J'espère que cela sera utile à tout le monde ! Introduction à la méthode : 1. Entrez dans le logiciel, cliquez sur le bouton « Plus » dans le coin supérieur droit et sélectionnez « Paramètres » dans la liste d'options ci-dessous pour entrer. 2. Après être entré dans la nouvelle interface, cliquez sur l'option « Paramètres de confidentialité et sécurité » sur la gauche. 3. Cliquez ensuite sur « Paramètres du site Web » à droite

L'incapacité de recevoir le code de vérification sur votre téléphone mobile est causée par des problèmes de réseau, des problèmes de paramètres du téléphone mobile, des problèmes d'opérateur de téléphonie mobile et des problèmes de paramètres personnels. Introduction détaillée : 1. Problèmes de réseau. L'environnement réseau dans lequel se trouve le téléphone mobile est instable ou le signal est faible, ce qui peut empêcher la livraison du code de vérification à temps. 2. Problèmes de configuration du téléphone mobile. ou la fonction vocale du téléphone mobile est accidentellement désactivée, ou le numéro d'envoi du code de vérification est ajouté à la liste noire, ce qui fait que le code de vérification n'est pas reçu normalement 3. Problèmes d'opérateur de téléphonie mobile, l'opérateur de téléphonie mobile peut avoir ; dysfonctionnements ou maintenance, entraînant la non-livraison du code de vérification à temps, etc.

Le numéro virtuel peut recevoir le code de vérification. Tant que le numéro de téléphone mobile renseigné lors de l'inscription est conforme à la réglementation et que le numéro de téléphone mobile peut être connecté normalement, vous pouvez recevoir le code de vérification par SMS. Cependant, vous devez être prudent lorsque vous utilisez des numéros de téléphone mobile virtuels. Certains sites Web ne prennent pas en charge l'enregistrement de numéros de téléphone mobile virtuels, vous devez donc choisir un fournisseur de services de numéro de téléphone mobile virtuel classique.

Cas de traitement d'images PHP : Comment implémenter la fonction de code de vérification des images Avec le développement rapide d'Internet, les codes de vérification sont devenus l'un des moyens importants pour protéger la sécurité des sites Web. Le code de vérification est une méthode de vérification qui utilise la technologie de reconnaissance d'image pour déterminer si l'utilisateur est un utilisateur réel. Cet article expliquera comment utiliser PHP pour implémenter la fonction de code de vérification des images et sera accompagné d'exemples de code. Introduction Un code de vérification est une image contenant des caractères aléatoires. L'utilisateur doit saisir les caractères dans l'image pour réussir la vérification. Le processus principal de mise en œuvre du code de vérification consiste à générer des caractères aléatoires et à dessiner des caractères dans des images.

Avec le développement d'Internet et la popularité des smartphones, la fonction de connexion par code de vérification est adoptée par de plus en plus de sites Web et d'applications. La connexion par code de vérification est une méthode de connexion qui vérifie l'identité de l'utilisateur en saisissant le code de vérification correct pour améliorer la sécurité et prévenir les attaques malveillantes. Dans le développement PHP, la mise en œuvre d'une simple fonction de connexion par code de vérification n'est pas compliquée et peut être réalisée via les étapes suivantes. Créer une table de base de données Tout d'abord, nous devons créer une table dans la base de données pour stocker les informations du code de vérification. La structure du tableau peut contenir les champs suivants : id : clé primaire à incrémentation automatique du téléphone

"Le plus ennuyeux, ce sont toutes sortes de codes de vérification bizarres (voire pervertis) lorsque vous vous connectez à un site Web. Maintenant, il y a de bonnes et de mauvaises nouvelles. " La bonne nouvelle est que l’IA peut le faire pour vous. Si vous ne me croyez pas, voici trois cas réels de difficulté croissante de reconnaissance : Et voici les réponses données par un modèle appelé « Pix2Struct » : Sont-ils tous précis et mot pour mot ? Certains internautes ont déploré : Bien sûr, la précision est meilleure que la mienne. Alors, peut-il être transformé en plug-in de navigateur ? ? Oui, certaines personnes ont dit : même si ces cas sont relativement simples, si vous les ajustez simplement, je ne peux pas imaginer à quel point l'effet sera puissant. La mauvaise nouvelle est donc que le code de vérification ne pourra bientôt plus arrêter les robots ! (Danger danger danger...) Comment faire ? Pix2St

Comment créer une image de code de vérification en utilisant PHP ? CAPTCHA est une méthode couramment utilisée pour vérifier si l'utilisateur est un humain et non une machine. Sur les sites Web, nous voyons souvent des images de codes de vérification, qui obligent les utilisateurs à saisir des caractères ou des chiffres aléatoires affichés sur l'image pour effectuer des opérations telles que la connexion, l'enregistrement et les commentaires. Cet article explique comment utiliser PHP pour créer une image de code de vérification et fournit des exemples de code spécifiques. 1. Bibliothèque PHPGD Pour créer une image de code de vérification, nous devons utiliser la bibliothèque GD de PHP. La bibliothèque GD est une extension de traitement d'images.

La réception de codes de vérification de diverses plateformes sur votre téléphone mobile peut être due au fait que vos informations personnelles ont été volées, que votre numéro de téléphone mobile a été utilisé à mauvais escient ou que votre numéro de téléphone mobile a été mal renseigné ou utilisé à mauvais escient. Introduction détaillée : 1. Des pirates informatiques ou des criminels peuvent obtenir vos informations personnelles via divers canaux, puis utiliser ces informations pour enregistrer des comptes sur diverses plateformes. 2. Les numéros de téléphone mobile ont été abusés et certains criminels utiliseront A ; un grand nombre de numéros de téléphone mobile sont obtenus par divers moyens, puis ces numéros de téléphone mobile sont utilisés pour mener diverses activités frauduleuses 3. Les numéros de téléphone mobile sont mal renseignés ou utilisés à mauvais escient, etc.
