python - 机械化不显示 FB 消息表单

标签 python

import mechanize,cookielib
br=mechanize.Browser()
cookie_jar=cookielib.CookieJar()
br.set_cookiejar(cookie_jar)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.set_handle_referer(True)
br.set_handle_robots(False)
br.open("http://facebook.com/login.php")
br.select_form(nr=0)
br.form['email']=raw_input("Email please: ")
br.form['pass']=raw_input("Password please: ")
br.submit()
if "Logout" in br.response().read():
    print "Successfuly Logged in...May the Spam Process Begin ;) "
else:
    print "Something is wrong with logging in.Sorry :( "
link_to_spam=raw_input("Enter the messages link for the one you want to spam\n\
Example: https://www.facebook.com/messages/someone: ")
br.open(link_to_spam)
for f in br.forms():
    print f

所以这段代码没有在 facebook 中显示消息表单。不要评论代码的目的。我只是为了好玩而编写代码,不会实际使用它,除非我的 friend 接受它但即便如此,我也不会经常使用它。 有谁知道为什么它没有显示?

最佳答案

我不确定他们是否使用表单来发送消息,很可能是 javascript。无论哪种方式,这都可以使用 Selenium 完成。

首先,安装 Selenium:https://pypi.python.org/pypi/selenium

然后从这里下载 chrome 驱动程序:https://code.google.com/p/chromedriver/downloads/list

将二进制文件放在与您正在编写的 Python 脚本相同的文件夹中。 (或将其添加到路径或其他任何内容,此处提供更多信息:https://code.google.com/p/selenium/wiki/ChromeDriver)

之后,下面的代码应该可以工作了:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
email = raw_input("Email: ")
password = raw_input("Password: ")
person =raw_input("Enter the messages link for the one you want to spam\n\
Example: https://www.facebook.com/messages/someone: ")
driver.get("http://www.facebook.com")
elem = driver.find_element_by_id("email")
elem.send_keys(email)
elem = driver.find_element_by_id("pass")
elem.send_keys(password)
elem.send_keys(Keys.RETURN)
driver.get("https://facebook.com/messages/"+person)
elem = driver.find_element_by_css_selector("div textarea.uiTextareaNoResize")
elem.send_keys("python test")
elem.send_keys(Keys.RETURN)

它实际上会在新窗口中打开 chrome 并在浏览器中键入文本。

关于python - 机械化不显示 FB 消息表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768460/

相关文章:

python - 禁止使用 python 类型将枚举条目作为函数参数的值

python - Django:有没有办法知道 url 在应用程序中是否有效?

python - 应用程序在 deiconify()、Tkinter 之后挂起

python - 如何在 QGraphicsView 中绘制折线 ("open polygon")

python - 此 WSGI 应用程序无法访问守护进程 :/mod. wsgi

python - 使用 pandas 读取 csv 文件,其中包含与列表中给定的列名匹配的任何列

python - 当路由上有多个表单时,如何对表单提交进行单元测试?

python - 使用Django Rest Framework的APITestCase时出错

python - Mock 的 autospec 将错误的参数注入(inject)到被调用的函数中

python - Python评估和逻辑运算符